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

如何用Group By+HAVING显示重复Lookup值的所有记录?

问题原因

你的关联查询返回空结果,核心问题在于子查询的分组逻辑错误:

  • 子查询里同时按Lookup和id分组,而id作为表的唯一标识(通常为主键),每条记录的id都不重复,分组后每组只会有1条记录,HAVING COUNT(*) > 1的条件永远无法满足,导致子查询返回空集,最终关联后没有数据。
正确查询方案

方案1:关联重复Lookup集合

先筛选出所有存在重复的Lookup值,再关联原表获取对应的id:

SELECT a.id, a.Lookup
FROM Clients AS a
JOIN (
    SELECT Lookup
    FROM Clients
    GROUP BY Lookup
    HAVING COUNT(*) > 1
) AS b ON a.Lookup = b.Lookup
ORDER BY a.Lookup, a.id;

方案2:窗口函数实现(更高效简洁)

用窗口函数直接计算每个Lookup的重复次数,再过滤出重复记录:

SELECT id, Lookup
FROM (
    SELECT 
        id, 
        Lookup,
        COUNT(*) OVER(PARTITION BY Lookup) AS lookup_duplicate_count
    FROM Clients
) AS temp
WHERE lookup_duplicate_count > 1
ORDER BY Lookup, id;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 00:04:52