MySQL在Result Set中返回的行数少于Limit

时间:2017-09-13 14:11:07

标签: mysql

我们有一个运行方式如下:

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实现这一点时背后的实际机制决定。

由于

1 个答案:

答案 0 :(得分:0)

由于我们无法重现您的结果(有时4999 -v-大多数为5000),我所能提供的是,当返回4999时,一行不符合标准。请注意,第二个参数是最大值,因此如果没有更多行要显示,它将停在最后一行,这意味着行数少于返回的第二个参数。

MySQL文档说:

  

LIMIT子句可用于约束返回的行数   通过SELECT语句。 LIMIT需要一个或两个数字参数,   必须都是非负整数常量......

     

...

     

使用两个参数,第一个参数指定的偏移量   第一行返回,第二行指定最大数量   要返回的行。初始行的偏移量为0(不是1):

 SELECT * FROM tbl LIMIT 5,10;  # Retrieve rows 6-15

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