Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysql aktualisiert mehrere Zeilen mit jeweils eigenen Werten mit einer CASE-Anweisung

Anscheinend suchen Sie nach etwas in der Art:

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

In dieser Situation ist es jedoch eine sinnvolle Lösung, separate Updates durchzuführen. Die obige Abfrage erfordert, dass jede Zeile in der Tabelle überprüft wird, um festzustellen, ob sie der Bedingung entspricht. Wenn Sie einen Index auf id_account haben (und vermutlich tun Sie das, weil es der Primärschlüssel zu sein scheint), dann wird es sehr schnell gehen, eine einzelne Zeile zu aktualisieren.

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