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

Instrukcje MySQL CASE...WHERE...THEN

To nie jest tak, że CASE musi mieć więcej niż jeden, WHEN...THEN , chodzi o to, że musi obsłużyć wszystkie dane, które mu podasz.

Jeśli usuniesz jedną z klauzul, zostawiasz dziurę. np.

UPDATE partsList SET quantity =  
CASE
  WHEN partFK = 1 THEN 4
END
WHERE buildFK = 1;

Z tą instrukcją aktualizacji, jeśli parkFK wynosi 2, aktualizacja kończy się niepowodzeniem, ponieważ CASE nie może obsłużyć danych wejściowych.

Możesz ograniczyć swoje dane źródłowe, dodając kolejną linię do swojej klauzuli where (np. AND partFK in (1,2) ) lub możesz dodać ELSE do wyrażenia przypadku.

UPDATE partsList SET quantity =  
CASE
  WHEN partFK = 1 THEN 4
  WHEN partFK = 2 THEN 8
  ELSE 12 
END
WHERE buildFK = 1;

Jednak na podstawie przedstawionej instrukcji SQL prawdopodobnie istnieje lepszy sposób. Przypuszczalnie partFK jest kluczem obcym do jakiejś innej tabeli. Czy możesz pobrać wartość quantity stamtąd?



  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 działa funkcja MID() w MySQL

  2. Średnia danych z każdych 5 minut w podanych czasach

  3. MySQL — funkcja FOUND_ROWS() dla całkowitej liczby wierszy, których dotyczy problem

  4. Wydajność widoku MySQL

  5. Uruchom zapytanie SQL podczas uruchamiania usługi MySQL