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

如何用QueryDsl按日期排序并将指定枚举值分组后置?

特定分组后置+全局日期升序的SQL排序方案

核心思路是给需要后置的分组设置更高的排序优先级值,让非目标分组先排,再统一按日期升序排序,具体实现如下:

假设你的表名为target_table,类型列是enum_column(枚举值为A/B/C),日期列是dateCreated,直接在SQL的ORDER BY子句中嵌套CASE表达式即可:

SELECT *
FROM target_table
ORDER BY 
  CASE WHEN enum_column = 'A' THEN 1 ELSE 0 END,
  dateCreated ASC;

逻辑说明

  • CASE表达式会给所有enum_column = 'A'的行标记为1,其他行标记为0。排序时0会排在1前面,所以非A的分组整体前置,A组整体后置。
  • 第二个排序条件dateCreated ASC会让所有行(包括A组内部)都按照创建日期升序排列,完全匹配你的需求。

对应示例验证

按照你给出的示例排序结果5,6,4,1,3,2,只要这些行的dateCreated是依次递增,且前3行(5/6/4)的类型非A,后3行(1/3/2)的类型为A,用上述SQL就能得到预期的排序结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:57:08