使用mysql order by和limit,同一条记录出现在两页中

时间:2017-07-18 08:15:43

标签: mysql limit

这是我的sql:

SELECT ID
FROM table R
ORDER BY rank desc limit 0,25;

所有记录的排名均为0。

我使用限制将pase size设置为25。 所以使用限制0,25,我得到了第一页; 使用限制25,25,我得到第二页。

问题是,一个记录出现在两个页面中。

我猜这是mysql的一个错误。 我的mysql版本是5.6.24。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

  

所有记录的排名均为0。

ORDER BY rank时没有唯一的记录顺序。如果更新或压缩表(或从备份恢复数据后),即使LIMIT 0,25也可以在不同的执行中返回不同的行,并且没有错误。

使用ORDER BY rank DESC, ID DESC,确保排名相等的行始终以相同的顺序返回。

我添加了ID DESC以获取最新的行。如果表包含存储上次修改日期的列,则使用它而不是ID。或者创建另一个更适合您应用程序的排序规则。