#mysql
#mysql
Вопрос:
есть ли какой-либо способ использовать оператор if-else в mysql вне sp и функций в специальных запросах? Это можно легко сделать с помощью MS SQL. Это мой запрос:
SET @Flag := 'u', @appUserID := 0;
SELECT app_user_id
INTO @appUserID
FROM app_user
WHERE user_login_id = @UserLoginID;
IF @Flag = 'u' THEN
SELECT @appUserID;
END IF;
Я получаю эту ошибку: «Код ошибки: 1064. У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с «IF @Flag = ‘u’ ЗАТЕМ ВЫБЕРИТЕ @appUserID’ в строке 1»
Комментарии:
1. Логика IF / ELSE также должна работать в MySQL: dev.mysql.com/doc/refman/8.0/en/if.html
2. если zthen работает только в хранимых процедурах, так где вы это запускаете?
Ответ №1:
Запустив это на обычной вкладке запроса, вы можете использовать DDL
SET @Flag := 'u', @appUserID := 0;
SELECT app_user_id
INTO @appUserID
FROM app_user
WHERE user_login_id = @UserLoginID;
SELECT IF(@Flag = 'u',@sql := "SELECT @appUserID; ",@sql := "DO NULL");
PREPARE stmt1 FROM @sql;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
Комментарии:
1. Спасибо, это может работать, только если у меня есть два условия, то есть if и else, а не в случае нескольких случаев if, else if . Я предполагаю, что это эквивалент IIF() в sql server.
2. mys ql IF(cond,trueresult, false result) в случае нескольких вы можете переключиться на РЕГИСТР WGEN или вложить предложение IF