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

DB2:能否不使用MAX聚合函数改写查询以获取最大值?

不用聚合函数获取指定Id的最高value记录

当然可以不用聚合函数改写,这里提供两种常见的实现方式,效果和原查询一致:

方法一:使用NOT EXISTS子查询

SELECT *
FROM A
WHERE Id = 123
AND NOT EXISTS (
    SELECT 1
    FROM A AS innerA
    WHERE innerA.Id = 123
    AND innerA.value > A.value
)

逻辑说明:筛选出Id=123的记录,并且确保不存在同Id下value比当前记录更大的条目,这样剩下的就是该Id下value最大的记录。

方法二:使用自连接+空值筛选

SELECT a.*
FROM A a
LEFT JOIN A b 
  ON a.Id = b.Id 
  AND b.value > a.value
WHERE a.Id = 123
AND b.Id IS NULL

逻辑说明:通过左连接同表中Id相同但value更大的记录,最终筛选出无法匹配到更大value的记录(即b.Id为NULL的条目),这些就是目标结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:35:26