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

如何按日期排序同时聚合同group_uuid条目并按组首id排序?

实现按组聚合且按组内最小ID排序的查询

可以实现这个需求。核心思路是先为每个group_uuid计算出该组的最小id,以此作为组的排序依据,再将同一组的条目聚合在一起,组内按id(或日期)排序。

解决方案SQL

SELECT f.*
FROM food f
INNER JOIN (
    SELECT group_uuid, MIN(id) AS min_group_id
    FROM food
    GROUP BY group_uuid
) group_min_ids ON f.group_uuid = group_min_ids.group_uuid
ORDER BY group_min_ids.min_group_id ASC, f.id ASC;

逻辑说明

  1. 子查询group_min_ids:为每个group_uuid计算出该组的最小id值(min_group_id),这个值决定了整个组的排序位置——最小id越小的组越靠前。
  2. 关联查询:将原表food与子查询结果通过group_uuid关联,获取每条记录对应的组最小id。
  3. 排序规则:
    • 首先按min_group_id升序排列,确保group_uuid为6d37ca的组(最小id为1)排在最前,接着是d90ad2组(最小id为2),最后是03a7f3组(最小id为5)。
    • 组内按id升序排列,保证同组内的条目按创建顺序排列,符合你要求的Apple之后紧跟Orange、Cucumber之后紧跟Carrot的结果。

可选调整

如果希望组内按date排序而非id,只需将排序规则改为:

ORDER BY group_min_ids.min_group_id ASC, f.date ASC, f.id ASC;

在你的示例数据中,两种排序方式结果一致,若组内存在同日期不同id的情况,添加f.id ASC可保证排序的稳定性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 02:20:35