我正在使用MySQL,它支持OFFSET和LIMIT,非常棒。 但是如果我想查詢第一行等於特定的主鍵而不是頁面索引呢?如何用特定PK的起始行編寫SELECT查詢?
例如我有一個表:
ID NAME HEIGHT
1 kevin 1.67
2 bob 1.82
3 jane 1.70
4 wayne 1.59
我希望人們順序表與第一頁的最後一個ID的高度ASC爲1,整體觀點是4 1 3 2(頁大小= 2)
東西想:
SELECT ID,NAME,HEIGHT FROM table OFFSET ???? LIMIT 2 ORDER BY HEIGHT ASC
所以我應該得到:
3 jane 1.70
2 bob 1.82
很確定'ORDER BY'需要在**'OFFSET'和'LIMIT'之前來**。在任何情況下,您的偏移量只是頁碼乘以頁面大小(-1代表基於零的偏移量) – Phil
除了獲取特定行(或進行排序)之外,不應使用「id」穩定,因爲它是一個獨特的關鍵)。這些值不重要,而且很少相關。如果你試圖按下標準(所以理論上你不需要'OFFSET'),你的'WHERE'子句需要看起來像'WHERE height>:previousHeight OR(height =:previousHeight AND id> :previousId)''(這個假設''id'已被添加到'ORDER BY'中以使相同的'height'值的順序穩定,我們實際上並不關心它的值是什麼)。 –
@ Clockwork-Muse thx的建議,我的問題是,我的客戶只是要求'加載更多'的行動,並給我在列表底部的最後一個ID,這幾乎就像在Youtube上加載評論,每次我得到最後一次評論的ID,我如何實現這個? –