2017-09-13 60 views
-1

选择行提供行意想不到数:限制条件不工作与限制条件有望

SELECT `id`, `Date`, `row1`, `row2`, `row3`, `row4`, `row5` 
FROM `table` 
ORDER BY `id` ASC, `Date` ASC 
LIMIT 1, 800 

这SELECT显示正是它应该:800行

SELECT `id`, `Date`, `row1`, `row2`, `row3`, `row4`, `row5` 
FROM `table` 
ORDER BY `id` ASC, `Date` ASC 
LIMIT 801, 1600 

这SELECT的确带来它应该:提供的,而不是800

为什么1600行LIMIT条件无法正常工作?

+0

为什么你会拥有一个名为行列?你喜欢混乱? – Strawberry

+1

你[询问'1600'行(https://dev.mysql.com/doc/refman/5.7/en/select.html),你会得到'1600'行。 – axiac

+0

800减1为799.所以,你得到800行的事实显然是一个迹象表明,LIMIT返回在极限指定的(如果可用)行的数量,并在限制指定的行不数减去行数在偏移量中指定。你已经完全为自己说明了这个事实! – Strawberry

回答

1

LIMIT和OFFSET不是来自于价值观。偏移量是要跳过的文档/行数,限制是要显示的最大行数。在你的情况下,跳过800行,并显示下一个800分的记录,它应该是LIMIT 800800

+0

好的, - 谢谢。 – Peter

0

限制和偏移颠倒,当您使用逗号语法,所以它是:

限价抵消,限制

这相当于:

限时限量OFFSET偏移