0
SELECT *
FROM users
ORDER BY highscore DESC
LIMIT 5 OFFSET 5
SELECT *
FROM users
ORDER BY highscore DESC
LIMIT 5 OFFSET 10
返回相同的結果。當我省略LIMIT子句時,它們與記錄不同!我搜索了社區。有類似的問題,但他們沒有幫助。
編輯:這裏是表數據 -
SELECT *
FROM users
ORDER BY highscore DESC
LIMIT 5 OFFSET 5
SELECT *
FROM users
ORDER BY highscore DESC
LIMIT 5 OFFSET 10
返回相同的結果。當我省略LIMIT子句時,它們與記錄不同!我搜索了社區。有類似的問題,但他們沒有幫助。
編輯:這裏是表數據 -
據推測,問題是,你必須爲highscore
聯繫。當你有關係時,MySQL以任意和不確定的方式排序具有相同值的行。即使是同一查詢的兩次運行也會導致不同的排序。
爲什麼?原因很簡單。對於具有相同值的鍵進行排序沒有「自然」順序。 SQL表格代表無序集合。
爲了使排序穩定,包括獨特的ID作爲ORDER BY
的最後一個鍵:
SELECT u.*
FROM users u
ORDER BY u.highscore DESC, u.userId
LIMIT 5 OFFSET 5;
然後,當您獲取下一個5行,他們會有所不同。
是否有任何限制,以防止用戶具有相同的高分? –
沒有限制。我還應該提到,他們中的很多人都有相同的高分。 –
向我們顯示錶格數據 –