Mysql 使用多个 ORDER BY 进行分页

Mysql Paging With multiple ORDER BY

我在使用 mysql 寻呼机时遇到一些问题。

这是我的查询:

SELECT id FROM table WHERE f1='1' AND f2='0' AND uid=43 ORDER BY pro_type DESC, pro DESC, cr_date DESC LIMIT 100;

SELECT id FROM table WHERE f1='1' AND f2='0' AND uid=43 ORDER BY pro_type DESC, pro DESC, cr_date DESC LIMIT 100 OFFSET 100;

也许有人知道,在那种情况下 ORDER BY & LIMIT OFFSET 有什么问题?

谢谢。

基本上,可能发生的情况是数据具有 pro_type, pro, cr_date 的重复值。当您使用 order by 并且键相同时,MySQL 不保证具有相同键值的结果的顺序。也就是说排序不是"stable".

假设 id 是唯一的,解决方案是将它添加到 order by 子句中,以便排序键是唯一的:

ORDER BY pro_type DESC, pro DESC, cr_date DESC, ID
------------------------------------------------^
LIMIT 100;