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

MySQL warunkowo UPDATE wartości kolumn logicznych wierszy na podstawie białej listy identyfikatorów

Czy nie zapomniałeś zrobić „INNEGO” w opisie sprawy?

UPDATE my_table
    SET field = CASE
        WHEN id IN (/* true ids */) THEN TRUE
        WHEN id IN (/* false ids */) THEN FALSE
        ELSE field=field 
    END

Bez ELSE zakładam, że łańcuch oceny zatrzymuje się na ostatnim KIEDY i wykonuje tę aktualizację. Ponadto nie ograniczasz wierszy, które próbujesz zaktualizować; jeśli nie zrobisz INNEGO, powinieneś przynajmniej powiedzieć aktualizacji, aby aktualizowała tylko żądane wiersze, a nie wszystkie wiersze (tak jak robisz). Spójrz na poniższą klauzulę WHERE:

  UPDATE my_table
        SET field = CASE
            WHEN id IN (/* true ids */) THEN TRUE
            WHEN id IN (/* false ids */) THEN FALSE
        END
  WHERE id in (true ids + false_ids)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Utwórz wyzwalacz, aby usunąć wiersze, które mają> 90 dni

  2. Uzyskaj całkowitą liczbę przepracowanych godzin dziennie mysql

  3. Błąd zapytania Mysql - Auto Monety DODAJ

  4. Jak zwrócić kolumny liczb całkowitych i liczbowych z MySQL jako liczby całkowite i numeryczne w PHP?

  5. Właściwy model bazy danych dla systemu informacji zwrotnej od użytkowników (ciekawy przypadek)