我正在尝试将if语句嵌入到最终会成为常规的语句中。
SET @foo = (SELECT foo FROM table WHERE id = 1);
SET @bar = (SELECT bar FROM table WHERE id = 1);
IF @foo = @bar THEN SET @thisVar = 1;
ELSE SET @thisVar = 0;
END IF
SELECT @thisVar;
但我明白了:
错误代码:1064您的SQL语法出错;检查 手册,对应右边的MySQL服务器版本 在'IF @foo = @bar THEN SET @thisVar = 1;'第1行附近使用的语法
我做错了什么?
答案 0 :(得分:3)
不完全确定那里有什么,但为什么错误说第1行?也许问题是你实际上没有运行整个程序。
您可以尝试使用IF()函数,如下所示:
SET @thisVar = IF(@foo = @bar, 1, 0);
对于简单的if / else赋值,我认为这更简洁,更清晰。
答案 1 :(得分:2)
当声明所有内容时,包装到程序中会很好。还删除了@'s。
CREATE PROCEDURE `DO_SOMETHING`()
BEGIN
DECLARE _foo VARCHAR(20);
DECLARE _bar VARCHAR(20);
DECLARE _thisVar INT;
SET _foo = 'test';
SET _bar = 'test';
IF _foo = _bar THEN SET _thisVar = 1;
ELSE SET _thisVar = 0;
END IF;
SELECT _thisVar;
END