我们有一个运行方式如下:
select distinct(id)
from TABLE
where date_id >= :startDate
and date_id <= :endDate
limit :offset,5000
问题是 - 有时这个查询返回5000行,有时候我会告诉你4999行。诀窍也是,昨天,每次运行时我都可以得到一个特定的偏移量(125000)返回4999,但是现在,它现在又回到了5000.
知道为什么会这样吗?我已经读过MySQL的限制只是一个限制,返回 AT MOST n行数,但我想要了解的是当MySQL实现这一点时背后的实际机制决定。
由于
答案 0 :(得分:0)
由于我们无法重现您的结果(有时4999 -v-大多数为5000),我所能提供的是,当返回4999时,一行不符合标准。请注意,第二个参数是最大值,因此如果没有更多行要显示,它将停在最后一行,这意味着行数少于返回的第二个参数。
MySQL文档说:
LIMIT子句可用于约束返回的行数 通过SELECT语句。 LIMIT需要一个或两个数字参数, 必须都是非负整数常量......
...
使用两个参数,第一个参数指定的偏移量 第一行返回,第二行指定最大数量 要返回的行。初始行的偏移量为0(不是1):
SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15