2017-09-13 79 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偏移