MySQL中的IF语句导致错误代码1064

时间:2011-11-22 17:38:48

标签: mysql mysql-error-1064

我正在尝试将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行附近使用的语法

我做错了什么?

2 个答案:

答案 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