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

基于多列判定重复并保留单条记录的数据筛选技术问询

基于多列判定重复项并筛选记录的解决方案

一、SQL实现:基于多列组合筛选重复组的任意一行

要实现按多列组合判定重复,再从每组重复项里挑任意一行,有两种实用方法:

方法1:窗口函数(灵活可控)

假设你的表是data,用来判定重复的列是col1, col2, col3,用ROW_NUMBER()给每组重复项编号,取编号为1的行就行:

SELECT *
FROM (
    SELECT 
        *,
        ROW_NUMBER() OVER (PARTITION BY col1, col2, col3 ORDER BY (SELECT NULL)) AS rn
    FROM data
) t
WHERE rn = 1;
  • 说明:PARTITION BY后面跟的就是用来判定重复的多列;ORDER BY (SELECT NULL)是随机取每组任意一行,如果要固定取某一行(比如ID最小的),换成ORDER BY id ASC就行。

方法2:分组+关联查询

如果只需要保留部分列,也可以先分组取每组的唯一标识(比如最小ID),再关联原表取整行:

SELECT d.*
FROM data d
JOIN (
    SELECT col1, col2, col3, MIN(id) AS min_id
    FROM data
    GROUP BY col1, col2, col3
) t ON d.id = t.min_id;

二、Excel实现:多列组合判定重复并筛选每组任意一行

假设用来判定重复的是A、B、C列,数据从第2行开始:

方法1:辅助列标记法

  1. 在空白列(比如D列)的D2单元格输入公式,把多列内容合并成唯一标识:
    =A2&B2&C2
    
    下拉填充到所有行。
  2. 再在E列E2单元格输入公式,标记每组重复项的第一行:
    =COUNTIF($D$2:D2,D2)=1
    
    下拉后,显示TRUE的行就是每组重复项里的第一行,直接筛选这部分行即可。

方法2:高级筛选法

  1. 选中整个数据区域,点击「数据」选项卡的「高级」筛选。
  2. 在弹窗里选「将筛选结果复制到其他位置」,勾选「选择不重复的记录」,设置好结果存放位置后点确定。
    • 注意:高级筛选默认按所有可见列的组合判定重复,要是只需要特定列组合,得先设置对应的条件区域。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 16:05:01