Mysql
 sql >> база данни >  >> RDS >> Mysql

mysql актуализира множество редове, всеки със свои собствени стойности, с оператор CASE

Изглежда, че търсите нещо подобно:

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

Но извършването на отделни актуализации е разумно решение в тази ситуация. Горната заявка ще изисква проверка на всеки ред в таблицата, за да видите дали отговаря на условието. Ако имате индекс на id_account (и вероятно правите така, както изглежда, че е първичен ключ), тогава актуализирането на един ред ще бъде много бързо.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Инсталирането на Rails, MySQL и т.н. всичко се обърка

  2. XA срещу производителност на JDBC драйвер без XA?

  3. MYSQL group_concat еквивалент в Sybase ASE?

  4. Грешка Delphi XE5 FireDAC:Не може да се зареди библиотеката на доставчик [libmysql.dll или libmysqld.dll]

  5. Начин за прекратяване на изпълнението на MySQL скриптове (може би пораждаща грешка)?