如何解决sql当order by的子句值相同时查询出来的结果乱序
问题描述:
在做项目时通过create_time降序分页查询时(即order by create_time DESC),查询出的结果乱序,问题出现在create_time的值相同。
相关代码:
SELECT purchase_request.request_id, purchase_request.create_time FROM purchase_request WHERE purchase_request.deleted = 0 ORDER BY purchase_request.create_time DESC
查询结果:
解决方案:
为了避免类似的问题,我们可以将主键(或者具有唯一性的字段)排序引入需要排序的业务字段后。
SELECT purchase_request.request_id, purchase_request.create_time FROM purchase_request WHERE purchase_request.deleted = 0 ORDER BY purchase_request.create_time DESC, purchase_request.request_id