sql >> Databáze >  >> RDS >> Mysql

Příkazy MySQL CASE...WHERE...THEN

Není to ten CASE musí mít více než jeden, WHEN...THEN , je to, že musí zpracovat všechna data, která mu poskytnete.

Pokud jste odstranili jednu z klauzulí, zanecháte díru. např.

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

S tímto prohlášením o aktualizaci, pokud parkFK je 2, pak se aktualizace nezdaří, protože CASE nemůže zpracovat vstup.

Zdrojová data můžete omezit přidáním dalšího řádku do klauzule where (např. AND partFK in (1,2) ), nebo můžete přidat ELSE na výraz případu.

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

Na základě příkazu SQL, který jste ukázali, však pravděpodobně existuje lepší způsob. Pravděpodobně je partFK cizím klíčem k nějaké jiné tabulce. Můžete získat hodnotu pro quantity odtud?



  1. MySQL:Seskupit a spočítat více polí

  2. Jak zkontrolovat, zda MySQL vrací hodnotu null/empty?

  3. SQL se připojí

  4. Úvod do PostgreSQL