You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何先展示当日订单再按常规排序且避免日期重复?

实现当日订单优先展示且无重复的SQL排序方案

要达成你要的效果——先展示指定日期(示例:2024-04-06)的订单,再按原逻辑排序其余非当日订单且无重复,只需要在原SQL的ORDER BY中新增一个优先级判断字段,把当日订单单独归为一组排在最前面即可。

修改后的SQL代码

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
  -- 优先展示当日订单,0代表优先级更高
  CASE WHEN DATE(lo.start_time) = '2024-04-06' THEN 0 ELSE 1 END,
  -- 每组内部保持原有的排序逻辑
  lo.start_time DESC
LIMIT 50;

关键说明

  • 优先级分组:通过CASE语句把当日订单标记为0,非当日标记为1,排序时0会排在1前面,确保当日订单先展示。
  • 无重复保证:第二组的订单是被CASE语句排除了当日的,所以不会出现当日订单在后续结果中重复的情况。
  • 动态当日日期:如果不需要写死日期,而是取系统当前日期,可根据你的数据库类型替换:
    • MySQL:DATE(lo.start_time) = CURDATE()
    • PostgreSQL:DATE(lo.start_time) = CURRENT_DATE
    • SQL Server:CAST(lo.start_time AS DATE) = CAST(GETDATE() AS DATE)

内容的提问来源于stack exchange,提问作者oemer ok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 13:54:54