On m'a donné la tâche de mettre à jour quelques lignes en adatabase. Il y a deux colonnes dans lesquelles on est ID
et l'autre est CURRENCY
. J'ai mis à jour ces lignes à l'aide des affirmations de mise à jour suivantes:
update account set currency = 'INR' where id =15;
update account set currency = 'EURO' where id =12;
update account set currency = 'DOLLAR' where id =18;
update account set currency = 'Pound' where id =13;
-- and so on.
En réalité, dans ce cas, j'ai pu le faire facilement en utilisant ces relevés de mise à jour en raison d'un nombre relativement faible de lignes, mais de quoi il y a des milliers ou Lakhs (des centaines de milliers) de rangées? Est-ce le seul moyen de les mettre à jour ou existe-t-il une solution ou un script alternatif?
Lorsque vous avez plusieurs milliers de lignes, il est probable que vous les ayez déjà sous forme de tableau, une mise à jour comme celle-ci pourrait être possible:
UPDATE account SET currency = temptable.currency
FROM temptable WHERE id = temptable.id
WITH cte AS (SELECT 'EURO' currency, 12 id UNION ALL
SELECT 'DOLLAR' , 18 UNION ALL
SELECT 'Pound' , 13 UNION ALL ... )
UPDATE account
SET currency = (SELECT cte.currency
FROM cte
WHERE account.id = cte.id)
Donc, vous pouvez: