如何解决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

 

posted @ 2021-04-16 09:52  AinHai  阅读(568)  评论(0)    收藏  举报