sql >> Databasteknik >  >> RDS >> Mysql

mysql uppdatera flera rader, var och en med sina egna värden, med en CASE-sats

Det låter som att du letar efter något sånt här:

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

Men att göra separata uppdateringar är en vettig lösning i den här situationen. Ovanstående fråga kräver att du kontrollerar varje rad i tabellen för att se om den matchar villkoret. Om du har ett index på id_account (och förmodligen gör du som det ser ut att vara primärnyckeln) så kommer det att gå väldigt snabbt att uppdatera en enda rad.

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. lagra bild till byte[] i Mysql med asp.net och c#

  2. Importera data till mysql från oracle

  3. PARSE() vs CAST() vs CONVERT() i SQL Server:Vad är skillnaden?

  4. sql få totalt och filtrerat antal i en fråga