sql >> Database >  >> RDS >> Mysql

mysql werkt meerdere rijen bij, elk met zijn eigen waarden, met een CASE-instructie

Het klinkt alsof je zoiets zoekt:

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

Maar aparte updates doen is in deze situatie een verstandige oplossing. Voor de bovenstaande query moet elke rij in de tabel worden gecontroleerd om te zien of deze overeenkomt met de voorwaarde. Als u een index op id_account heeft (en vermoedelijk doet u wat het lijkt op de primaire sleutel), dan zal het erg snel zijn om een ​​enkele rij bij te werken.

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. Wat is de maximale grootte voor een varchar2 PL/SQL-subprogrammaargument in Oracle?

  2. Parameters gebruiken in een sql-instructie die date_format bevat

  3. Waarom bespaart SQL Server DATETIME-type tijd in tikken van 1/300 van een seconde?

  4. if elseif-voorwaarden in mysql-query