DECLARE @num INT DEFAULT = 5;
SELECT * FROM page p LEFT JOIN categorylinks c ON p.page_id = c.cl_from
WHERE c.cl_to = 'Art-Rock-Band' LIMIT @num
UNION ALL
SELECT * FROM page p LEFT JOIN categorylinks c ON p.page_id = c.cl_from
WHERE c.cl_to = 'Echo-Pop-Preisträger' LIMIT @num
UNION ALL
SELECT * FROM page p LEFT JOIN categorylinks c ON p.page_id = c.cl_from
WHERE c.cl_to = 'Englische_Band' LIMIT @num
它返回错误
你的SQL语法有错误;查看与MySQL服务器版本对应的手册,以便在第1行"DECLARE @num INT DEFAULT = 5"附近使用正确的语法
我不知道如何修复这个错误和DECLARE应该工作。
假设这是在begin
/end
块中,您不需要=
符号:
DECLARE @num INT DEFAULT 5;
或者,你可以这样写:
SET @num = 5;
编辑:那么看起来你的代码块不是一个存储程序。正如文档明确指出的:
LIMIT
子句可用于约束行数由SELECT
语句返回。LIMIT
接受一个或两个数字参数,它们必须都是非负整数常量这些异常:
在预处理语句中,
LIMIT
参数可以使用?占位符标记。在存储程序中,
LIMIT
参数可以使用整数值例程参数或局部变量指定。
因此,在存储过程、用户定义函数、触发器或动态SQL中允许执行您想要执行的操作。但是,并不是所有SQL查询都允许这样做。