9

那么当您在 LIMIT 子句中使用负值时会发生什么?会有负面后果(有点双关语)吗?

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

背景:我使用的是 MySQL CE 5.5.20。我编写了一个带有 int 参数的存储过程,并将其用于 LIMIT 子句。如果需要,我需要一种返回所有行的方法,因此我尝试在我的存储过程/例程中为 limit 参数传入 -1,并且成功了。

4

2 回答 2

8

根据文档,它必须是非负整数

LIMIT 子句可用于限制 SELECT 语句返回的行数。LIMIT 接受一个或两个数字参数,它们都必须是非负整数常量(使用准备好的语句时除外)。

在我看来,您遇到的是一个未记录的错误,因为如果参数与文档要求的参数不一致,mysql 应该会抛出错误。

我的建议是在存储过程中使用语法更正的 SQL。您仍然可以使用负整数作为标志来显示所有内容。像这样的东西

IF myparam >= 0 THEN
    SELECT * FROM `mytable` LIMIT myparam;
ELSE
    SELECT * FROM `mytable`;
END IF;
于 2012-09-19T20:23:06.643 回答
1

在其他版本的 MySQL 上使用它时,可能会产生错误。

MySQL中的错误

于 2012-04-23T13:49:36.323 回答