那么当你在LIMIT子句中使用负值时会发生什么?是否会产生负面影响(轻微的双关语)?
我没有看到关于这个和MySQL论坛的任何文档,我记得,sux。
背景: 我正在使用MySQL CE 5.5.20。我编写了一个存储过程,它接受一个int参数并将其用于LIMIT子句。如果需要,我需要一种方法来返回所有行,所以我尝试在我的商店过程/例程中传入-1作为limit参数,这很有效。
答案 0 :(得分:5)
根据documentation,它必须是非负整数
LIMIT子句可用于约束SELECT语句返回的行数。 LIMIT需要一个或两个数字参数,它们都必须是非负整数常量(使用预准备语句时除外)。
听起来像你正在经历的是一个未记录的bug,因为如果参数不符合文档要求,mysql应该抛出错误。
我的建议是在存储过程中使用语法纠正的SQL。您仍然可以使用负int作为标志来显示所有内容。像这样的东西
IF myparam >= 0 THEN
SELECT * FROM `mytable` LIMIT myparam;
ELSE
SELECT * FROM `mytable`;
END IF;
答案 1 :(得分:0)
在其他版本的MySQL上使用它时,可能会产生错误。