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行,他们会有所不同。
是否有任何限制,以防止用户具有相同的高分? –
没有限制。我还应该提到,他们中的很多人都有相同的高分。 –
向我们显示表格数据 –