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

MySQL CASE...WHERE...THEN оператори

Това не е CASE трябва да има повече от един, WHEN...THEN , той трябва да обработва всички данни, които му давате.

Ако премахнете една от клаузите, ще оставите дупка. напр.

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

С този израз за актуализиране, ако parkFK е 2, тогава актуализацията е неуспешна, защото CASE не може да се справи с въвеждането.

Можете или да ограничите изходните си данни, като добавите друг ред към клаузата where (напр. AND partFK in (1,2) ), или можете да добавите ELSE към случайния израз.

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

Въпреки това, въз основа на SQL израза, който сте показали, вероятно има по-добър начин. Предполага се, че partFK е външен ключ към някаква друга таблица. Можете ли да изтеглите стойността за quantity от там?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django MySQL отделна заявка за получаване на множество стойности

  2. Несъответствие на часовата зона в mysql и java

  3. php - Разрешаване на потребителите да предпочитат публикации

  4. Най-бързият начин да изтриете огромна MySQL таблица

  5. PHP код за конвертиране на MySQL заявка в CSV