CASE
Заявления в MYSQL
Есть два синтаксиса для случая отчетности
СИНТАКСИС 1:
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] ...
[ELSE statement_list]
END CASE
СИНТАКСИС 2:
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] ...
[ELSE statement_list]
END CASE
Объяснение на одном Синтаксис:
Для первого синтаксиса, case_value это выражение. Это значение сравнивается с выражением when_value в каждом предложении WHEN, пока один из них не будет равен. Когда будет найдено равное значение when_value, выполняется соответствующий оператор-оператор THEN statement_list. Если значение when_val равно, то выполняется оператор statement_list ELSE, если он есть.
Этот синтаксис не может использоваться для проверки равенства с NULL, поскольку NULL = NULL является ложным.
Объяснение на Синтаксис Two:
Для второго синтаксиса, каждый КОГДА Выражение предложения search_condition не вычисляется, пока одна правда, в этот момент его соответствующий пункт ТО statement_list выполняет. Если никакое условие search_condition не равно, выполняется оператор statement_list ELSE, если он есть.
Если нет, то когда значение__события или search_condition соответствует проверенному значению, а оператор CASE не содержит предложение ELSE, возникает случай, не найденный для ошибки оператора CASE.
Каждый statement_list состоит из одного или нескольких операторов SQL; пустой оператор_события не разрешен.
Для обработки ситуаций, когда никакое значение не соответствует какому-либо предложению WHEN, используйте ELSE, содержащий пустой блок BEGIN ... END, как показано в этом примере. (Отступ используется здесь в предложении ELSE для целей только ясности, и не иначе значительные.)
DELIMITER |
CREATE PROCEDURE p()
BEGIN
DECLARE v INT DEFAULT 1;
CASE v
WHEN 2 THEN SELECT v;
WHEN 3 THEN SELECT 0;
ELSE
END;
END CASE;
END;
|
И ваш код может быть модернизирован с помощью CASE-заявление, как это ..
UPDATE `crm_accounts` SET `reg` = CASE
WHEN age >= 17
AND age <= 35
AND balance > 0.00
AND type = "Júnior" THEN "Sim"
WHEN age >= 17
AND age <= 35
AND balance = 0.00
AND type = "Júnior" THEN "Não"
WHEN age >= 17
AND age <= 35
AND type = "Júnior" THEN "Efetivo"
ELSE `reg`
END
Что вы пытались? Некоторые читают: http://stackoverflow.com/a/15745186/180100 –