我想要一个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
任何人都可以帮我解决这个问题吗?
答案 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