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

SQL实现:过滤同一ID对应的重复名称

数据表去重查询方案

原始数据

IDName
1name_1
2name_2
3name_3
4name_4
1other_name_1
2other_name_2
5name_5

需求说明

部分ID对应多个Name值,需将other_name_1和other_name_2视为重复数据,查询得到无重复的ID和Name集合,期望输出如下:

期望结果

IDName
1name_1
2name_2
3name_3
4name_4
5name_5

可行SQL查询方法

方法1:优先保留非"other_"前缀的名称

通过分组和条件判断,为每个ID优先选取不是other_开头的Name,若该ID只有other_开头的名称则保留:

SELECT ID, 
       CASE WHEN EXISTS (SELECT 1 FROM your_table t2 WHERE t2.ID = t1.ID AND t2.Name NOT LIKE 'other_%')
            THEN MAX(CASE WHEN Name NOT LIKE 'other_%' THEN Name END)
            ELSE MAX(Name)
       END AS Name
FROM your_table t1
GROUP BY ID;

方法2:排序后取优先级最高的记录

利用窗口函数给非other_前缀的Name赋予更高优先级(排序值为0),然后为每个ID取第一条记录:

SELECT ID, Name
FROM (
    SELECT ID, Name,
           ROW_NUMBER() OVER (PARTITION BY ID ORDER BY CASE WHEN Name LIKE 'other_%' THEN 1 ELSE 0 END) AS rn
    FROM your_table
) t
WHERE rn = 1;

方法3:直接过滤指定重复值

如果仅针对other_name_1和other_name_2这两个特定值做过滤,可以用UNION组合结果:

SELECT ID, Name
FROM your_table
WHERE Name NOT IN ('other_name_1', 'other_name_2')
UNION
SELECT ID, Name
FROM your_table
WHERE ID NOT IN (SELECT ID FROM your_table WHERE Name IN ('other_name_1', 'other_name_2'));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 10:25:25