SQL LIMIT不能用作例外

时间:2012-03-28 20:10:40

标签: mysql sql

我一直认为查询中的LIMIT只选择我设置的数字。

假设我有两列要使用主键 - id进行选择。我有90行。

SELECT name, lastname 
FROM some_table 
WHERE id = '123' LIMIT 0, 30

将精确选择30行。好的,但是

SELECT name, lastname 
FROM some_table 
WHERE id = '123' LIMIT 30, 60

将选择超过30行。好吧,我正在使用PHP + mysql为AJAX paginator做这个。

我该如何正确地做到这一点?

6 个答案:

答案 0 :(得分:8)

limit是offset,rowcount。所以它应该是30,30,而不是30,60,如果你想要30行。

答案 1 :(得分:2)

SELECT name, lastname FROM some_table WHERE id = '123' LIMIT 30, 30;

用简单的语言,

前30是起始记录号 第二个30是30 + 30,这是第60个记录。

这应该可以使记录在30到60之间。

答案 2 :(得分:2)

当您为LIMIT指定两个参数时,第二个是要返回的最大行数;所以写LIMIT 30, 60代替LIMIT 30, 30。 (见the explanation of LIMIT in §12.2.9 "SELECT Syntax" of the MySQL 5.6 Reference Manual。)

答案 3 :(得分:2)

[LIMIT {[offset,] row_count | row_count OFFSET offset}]

第二个参数是行数。

答案 4 :(得分:1)

阅读the documentation

LIMIT 30 -- get 30 records
LIMIT 30, 60 -- skip 30 records and get next 60

答案 5 :(得分:1)

根据MySQL Documentation,限制语句的第二个数字是要返回的行数。如果要获取行31-60,则需要指定

SELECT name, lastname FROM some_table WHERE id = '123' LIMIT 30, 30

你要求MySQL从偏移量30开始给你60行。