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

如何在不向外层SELECT加子查询的前提下改写SQL查询

改写SQL查询获取最大日期(符合Hibernate 5.x限制)

你的原查询通过LEFT JOIN result表时在ON条件中匹配单条最大日期记录,但无法正确返回最大日期(显示为NULL)。以下是符合要求的改写方式,既不在外层SELECT子句添加子查询,也不新增WHERE子句:

select 
    qt.id as id, 
    ev.id as event_id, 
    res_max.max_date as date 
from quota qt 
left join (
    select quota_fk, max(allocation_date) as max_date
    from result
    group by quota_fk
) res_max on qt.id = res_max.quota_fk
left join event ev on qt.id = ev.quota_fk

改写说明:

  • 先对result表做聚合查询,按quota_fk分组,直接计算每个配额对应的最大分配日期,生成临时结果集res_max
  • 将quota表与这个临时结果集做LEFT JOIN,确保每个配额都能关联到对应的最大日期(无匹配时显示NULL)
  • 保留原有的与event表的关联逻辑,不影响id和event_id的输出

如果需要处理无匹配时的默认日期,可以用COALESCE(res_max.max_date, '默认日期值') as date来调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 13:35:22