SELECT *
FROM users
ORDER BY highscore DESC
LIMIT 5 OFFSET 5
和
SELECT *
FROM users
ORDER BY highscore DESC
LIMIT 5 OFFSET 10
返回相同的结果。当我省略LIMIT条款时,它们与记录不同!我搜索了社区。有类似的问题,但它们没有任何帮助。
编辑:这是表数据 -
答案 0 :(得分:1)
据推测,问题在于你与highscore
有联系。当你有联系时,MySQL会以任意和不确定的方式对具有相同值的行进行排序。即使是同一查询的两次运行也可能导致不同的排序。
为什么呢?原因很简单。对具有相同值的键进行排序没有“自然”顺序。 SQL表表示无序集。
要使排序稳定,请在ORDER BY
:
SELECT u.*
FROM users u
ORDER BY u.highscore DESC, u.userId
LIMIT 5 OFFSET 5;
然后,当您获取接下来的5行时,它们会有所不同。