#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;