sql >> Databáze >  >> RDS >> Mysql

mysql aktualizuje více řádků, každý s vlastními hodnotami, pomocí příkazu CASE

Zní to, jako byste hledali něco takového:

UPDATE tbl_accounts
SET nation_id =
     CASE id_account
     WHEN 3 THEN 3331
     WHEN 5 THEN 5551
     ELSE nation_id
     END,
group_id =
     CASE id_account
     WHEN 3 THEN 3332
     WHEN 5 THEN 5552
     ELSE group_id
     END

Ale dělat samostatné aktualizace je v této situaci rozumné řešení. Výše uvedený dotaz bude vyžadovat kontrolu každého řádku v tabulce, zda odpovídá podmínce. Pokud máte index na id_account (a pravděpodobně to děláte tak, jak to vypadá jako primární klíč), bude aktualizace jednoho řádku velmi rychlá.

UPDATE tbl_accounts SET nation_id = 3331, groupid = 3332 WHERE id_account = 3
UPDATE tbl_accounts SET nation_id = 5551, groupid = 5552 WHERE id_account = 5



  1. Ekvivalent upozornění na naslouchání MySQL

  2. Dotaz MySQL vyhledá hodnoty v řetězci odděleném čárkou

  3. Jak najít název omezení v PostgreSQL

  4. Pokus o provedení operace MINUS v MySQL