Mysql
 sql >> Baza danych >  >> RDS >> Mysql

mysql aktualizuje wiele wierszy, każdy z własnymi wartościami, za pomocą instrukcji CASE

Wygląda na to, że szukasz czegoś takiego:

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 robienie oddzielnych aktualizacji jest rozsądnym rozwiązaniem w tej sytuacji. Powyższe zapytanie będzie wymagało sprawdzenia każdego wiersza w tabeli, aby sprawdzić, czy spełnia on warunek. Jeśli masz indeks na id_account (i prawdopodobnie robisz to, co wydaje się być kluczem podstawowym), aktualizacja pojedynczego wiersza będzie bardzo szybka.

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. Jak mogę przeprowadzić odpytywanie bazy danych w czasie rzeczywistym w MySQL/PHP?

  2. Generowanie losowego i unikalnego ciągu 8 znaków za pomocą MySQL

  3. Jak sprawić, by mysql akceptował połączenia zewnętrznie?

  4. Narzędzia do wizualizacji MySQL

  5. Witryna jest obecnie offline z powodu wystąpienia błędu - Mautic