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

SQL查询:获取Table1中重复erp_key的关联Table2完整数据

解决方法:先统计重复次数再关联表

我来帮你搞定这个问题!你之前的查询之所以COUNT结果不对,核心原因是分组时包含了article_key、descr.、date这些每个记录唯一的字段——这会让每个分组只包含一条数据,COUNT自然永远是1,根本触发不了having COUNT(erp_key) > 1的条件。

咱们换个思路:先单独统计每个erp_key的重复次数,再把这个统计结果和原表、Table2关联,就能同时拿到重复次数和关联的描述、日期信息了。

正确的SQL查询语句

SELECT 
    t1.erp_key,
    t1.article_key,
    t2.descr.,
    t2.date,
    cnt.counter
FROM Table1 t1
INNER JOIN Table2 t2 
    ON t1.article_key = t2.article_key
INNER JOIN (
    -- 先统计所有重复的erp_key及其次数
    SELECT erp_key, COUNT(*) AS counter
    FROM Table1
    GROUP BY erp_key
    HAVING COUNT(*) > 1
) cnt 
    ON t1.erp_key = cnt.erp_key
ORDER BY t1.erp_key ASC;

结果验证

执行这个语句后,你会得到如下结果:

erp_keyarticle_keydescr.datecounter
3a3d5-4-20172
3a4f6-4-20172
5a6h8-4-20172
5a7j9-4-20172

完全符合你的需求:每个重复的erp_key对应的所有记录都显示出来,同时正确标注该erp_key的总重复次数。

为什么你的原查询不对?

你原查询的GROUP BY子句包含了erp_key, Table1.article_key, descr, date_——这四个字段的组合在你的数据里是完全唯一的(比如erp_key=3对应两个不同的article_key,各自的descr和date也不一样)。这就导致每个分组只能对应一条记录,COUNT(erp_key)的结果必然是1,永远满足不了having COUNT(erp_key) > 1的筛选条件,所以查不到任何数据或者结果不符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:51:36