MySQL - 如果查询返回错误

时间:2017-10-27 22:37:39

标签: mysql sql if-statement

我想要一个if查询,如下所示。

set @i=1;
set @j=2;
if @i < @j then select * from test limit 1;
end if;

我得到以下错误,

1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'if @i < @j then select * from test limit 1' at line 1

还在程序中尝试了这个,

DELIMITER $$
DROP PROCEDURE IF EXISTS test $$
create procedure test ()
set @i=1;
set @j=2;
if @i < @j then select * from test limit 1;
end if;
END $$


ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'if @i < @j then select * from test limit 1;
end if;
END' at line 1

任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

您需要begin

DELIMITER $$
DROP PROCEDURE IF EXISTS test $$
create procedure test ()
begin
    set @i=1;
    set @j=2;
    if @i < @j then
         select * from test limit 1;
    end if;
END $$

DELIMITER ;

您的第一个不起作用,因为if仅允许在编程块中使用。实际上,这就是为什么你的版本也不起作用的原因 - 没有begin if不在编程块中。

答案 1 :(得分:1)

不是使用IF,而是将测试放在查询中:

SELECT * FROM TEST
WHERE @i < @j
LIMIT 1