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

如何在SQL中筛选C1、C2、C3组合唯一的行?

筛选C1/C2/C3组合唯一的行

原数据表

| C1  | C2  | C3 | C4 |
r1 | a   | b   | c  | 1  |
r2 | a   | b   | c  | 2  |
r3 | c   | s   | d  | 3  |
r4 | c   | w   | w  | 4  |
r5 | c   | r   | w  | 5  |

需求说明

需要删除所有C1、C2、C3列组合存在重复的行,仅保留该组合唯一的记录,最终结果如下:

| C1  | C2  | C3 | C4 |
r3 | c   | s   | d  | 3  |
r4 | c   | w   | w  | 4  |
r5 | c   | r   | w  | 5  |

解决方案

推荐两种实用方法,适配不同数据库环境:

方法1:窗口函数(推荐,支持现代数据库)

利用COUNT()窗口函数统计每个C1/C2/C3分组的记录数,直接筛选出分组内仅一条记录的行:

WITH grouped_data AS (
    SELECT 
        *,
        COUNT(*) OVER (PARTITION BY C1, C2, C3) AS group_count
    FROM your_table_name
)
SELECT C1, C2, C3, C4
FROM grouped_data
WHERE group_count = 1;

方法2:子查询关联(兼容低版本数据库)

先统计每个组合的记录数,再关联原表筛选符合条件的行:

SELECT t1.C1, t1.C2, t1.C3, t1.C4
FROM your_table_name t1
INNER JOIN (
    SELECT C1, C2, C3
    FROM your_table_name
    GROUP BY C1, C2, C3
    HAVING COUNT(*) = 1
) t2 
ON t1.C1 = t2.C1 AND t1.C2 = t2.C2 AND t1.C3 = t2.C3;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 03:17:28