使用MySQL LIMIT的负值做什么?

时间:2012-03-24 15:36:55

标签: mysql5

那么当你在LIMIT子句中使用负值时会发生什么?是否会产生负面影响(轻微的双关语)?

我没有看到关于这个和MySQL论坛的任何文档,我记得,sux。

背景: 我正在使用MySQL CE 5.5.20。我编写了一个存储过程,它接受一个int参数并将其用于LIMIT子句。如果需要,我需要一种方法来返回所有行,所以我尝试在我的商店过程/例程中传入-1作为limit参数,这很有效。

2 个答案:

答案 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上使用它时,可能会产生错误。

The error in MySQL