我有一个应用程序,用户可以在其中创建订单。我想向他显示今天的订单,然后按正常方式订购。像这样:
今天的日期:2024-04-06
2024-04-06 #order1
2024-04-06 #order2
-then sort by normal
2024-04-08 #order4
2024-04-01 #order7
我脑子里在想的是,如果我按正常排序,那么我的日期会显示重复?我的意思是,首先是 2024-04-06,然后我从 2024-04-08 开始按正常排序,然后向下排序,然后再次到达 2024-04-06。那么,是否可以先按今天排序,然后再按其余排序,而不会显示重复?
目前这是我的代码:
SELECT
l.id as location_id,
l.name,
lo.id,
lo.start_time,
lo.end_time,
lo.leader_id,
lo.is_storno,
lo.storno_at,
lo.storno_by,
lo.employees_need,
lo.created_at
FROM location_orders lo
INNER JOIN location l
ON l.id = lo.location_id
WHERE lo.tenant_id = $1 AND lo.deleted_by IS NULL
ORDER BY lo.start_time DESC LIMIT 50;
我认为这个解决方案有效,我使用条件表达式将今天的订单放在顶部。我使用
CASE
今天的订单获得 0,其余订单获得 1。这样,ORDER BY
将首先对 0(今天的订单)进行排序,然后对 1(其他日期)进行排序。希望对您有所帮助,如果您有任何疑问,请询问。