2015-07-21 57 views
1
$sql="SELECT * FROM `table_name` LIMIT 1,-1"; 

为什么我得到一个错误报告:MySQL的:LIMIT 2,-1

SELECT * FROM `table_name` LIMIT 2,-1 

MySQL表示:文件

# 1064 - 你在你的SQL语法错误;请检查与您的MySQL服务器版本对应的手册,以在第1行的'-1'附近使用正确的语法。

+0

你是说第一个查询是成功的,但第二个失败? –

+0

由于-1,不支持。你想达到什么目的? –

+0

我想读取表中除第一行以外的所有行。 – ray

回答

0
https://dev.mysql.com/doc/refman/5.0/en/select.html

LIMIT条款

可以用来约束的行数由SELECT语句返回 。 LIMIT需要一个或两个数字参数, ,它们都必须是非负整数常量(使用 准备语句时除外)。

要检索从某个偏移量直到结果集 集合结束的所有行,可以使用一些大数目作为第二个参数。这 语句检索从第96行中的所有行到最后:

SELECT * FROM tbl LIMIT 95,18446744073709551615; 
你的情况

所以

$sql="SELECT * FROM table_name LIMIT 1,18446744073709551615"; 
+0

,但我发现网上有很多文档说如果将第二个参数设置为-1,这意味着每行直到表格的结尾被选中。例如,如果一个表有10行,我希望除第一行以外的所有行都使用LIMIT 1,-1 – ray

+0

对我来说,它更像是一个未记录的功能,我会建议保留记录的功能,以便您的应用程序保持可扩展性,如果你真的要使用限制-1,那么你必须创建一个过程/ fn将限制作为参数传递,并使用那里限制@参数,它应该与负值一起工作。至少在MySQL CE 5.5 –

+0

非常感谢,先生! – ray

0

LIMIT子句用于限制结果集中的行数。 LIMIT子句接受一个或两个参数。两个参数的值必须是零或正整数常量。

由于您使用了负数(-1),因此显示了该错误。

+0

但我发现网上有很多文档说如果你将第二个参数设置为-1,这意味着每行都会被选中,直到表的结尾。例如,如果一个表有10行,我希望除第一行以外的所有行都使用LIMIT 1,-1 – ray