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

SQL多列排序需求:最新日期优先,全零Count后置

解决SQL双条件排序问题:日期降序+Count为0后置

你的问题出在排序优先级上——原语句Date desc, count desc会优先按日期排序,导致新日期的Count=0记录会排在旧日期的Count>0记录前面,这和你“所有Count为0的数据排在最后”的需求冲突。

正确的排序逻辑应该是先区分Count是否为0,把非0的记录全部放在前面,再在各自分组内按日期降序排列。用CASE表达式来实现分组优先级:

SELECT 你的字段列表
FROM 你的表名
ORDER BY
  -- 给Count=0的记录分配更高的排序值,让它们排在后面
  CASE WHEN count = 0 THEN 1 ELSE 0 END,
  -- 同组内按日期最新在前
  Date DESC;

如果count字段可能存在NULL值,需要把NULL也归到“后置”组里,调整CASE表达式:

ORDER BY
  CASE WHEN count IS NULL OR count = 0 THEN 1 ELSE 0 END,
  Date DESC;

这样排序后,所有Count≠0的记录会按日期从新到旧排列在前,所有Count=0(或NULL)的记录会按日期从新到旧排列在最后,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 09:39:52