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

如何从SQL表中过滤掉某指定列存在重复值的所有行

SQL过滤指定列无重复值的行方案

区别于DISTINCT保留重复值的其中一条,该需求要实现的是只要指定列的某个取值存在重复,就剔除该取值对应的全部行,仅保留该列取值仅出现一次的对应行。

适用示例场景

原始表数据:

ORDER_IDNAME
ORD1Aaron
ORD2BOB
ORD3Carry
ORD1Danny
ORD2Emily
ORD2Frank

预期输出结果:

ORDER_IDNAME
ORD3Carry

实现方案

方案1:子查询分组统计(全数据库兼容)

通过分组统计指定列的出现次数,筛选出仅出现1次的取值后再匹配对应行:

SELECT * 
FROM 你的表名
WHERE ORDER_ID IN (
    SELECT ORDER_ID
    FROM 你的表名
    GROUP BY ORDER_ID
    HAVING COUNT(*) = 1
);

方案2:窗口函数(支持MySQL8.0+/PostgreSQL/SQL Server等)

用窗口函数给每行标记对应指定列的总出现次数,直接过滤即可:

SELECT ORDER_ID, NAME
FROM (
    SELECT 
        *,
        COUNT(*) OVER (PARTITION BY ORDER_ID) AS order_occur_cnt
    FROM 你的表名
) temp_table
WHERE order_occur_cnt = 1;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:15:03