Правильное использование условия If / else в MySQL на основе переменной сеанса

#mysql #database

Вопрос:

Если я установлю переменную сеанса (например, @tmp = 0), то запрос может быть запущен / проигнорирован в зависимости от того, выполнено ли условие.

 SET @create_table := IF(@tmp >= 1, 'CREATE TABLE table2 SELECT * FROM table1', 'no');
 

Это можно использовать для короткого запроса, подобного приведенному выше примеру, но не для более сложных запросов с несколькими операторами. Возможно ли сделать что-то подобное?

 IF(@tmp >= 1)
DO SOMETHING
ELSE
DO NOTHING
 

Комментарии:

1. Не путайте функцию IF() и оператор IF . Функция может использоваться как любая другая функция (ваш 1-й код), тогда как оператор может использоваться только в хранимых объектах (процедура, функция, триггер и т. Д.).

Ответ №1:

Правильный синтаксис выглядит следующим образом.

 IF condition1 THEN
   {...statements to execute when condition1 is TRUE...}

[ ELSEIF condition2 THEN
   {...statements to execute when condition1 is FALSE and condition2 is TRUE...} ]

[ ELSE
   {...statements to execute when both condition1 and condition2 are FALSE...} ]

END IF;