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

请求提供删除数据集重复行的查询语句

删除数据集重复行的SQL查询方案

没问题,针对你手里这个有重复行的数据集,我给你整理了几种常用SQL数据库下删除重复行的方案,你可以根据自己使用的数据库类型来选:

先确认去重结果(仅查询不删除)

如果你只是想先查看去重后的数据集,而不实际删除原表中的重复行,可以用DISTINCT关键字:

SELECT DISTINCT DivID, Account_Code, Name FROM your_table_name;

把your_table_name替换成你的实际表名即可,这条语句会返回所有不重复的记录。

实际删除重复行(保留每组重复中的一条)

下面分不同数据库给出具体的删除语句:

MySQL/MariaDB

方法1:使用窗口函数(MySQL 8.0+ 支持)

这种方法更清晰,适合没有唯一主键的表:

WITH cte AS (
    SELECT 
        DivID, Account_Code, Name,
        -- 按重复字段分组,给每组的行编号
        ROW_NUMBER() OVER (PARTITION BY DivID, Account_Code, Name ORDER BY (SELECT NULL)) AS rn
    FROM your_table_name
)
DELETE FROM your_table_name
WHERE (DivID, Account_Code, Name, rn) IN (SELECT DivID, Account_Code, Name, rn FROM cte WHERE rn > 1);

rn > 1表示删除每组中编号大于1的重复行,只保留第一条。

方法2:自连接删除(适合旧版本MySQL)

如果你的表有唯一主键(比如id列),可以用自连接的方式删除重复行:

DELETE t1 FROM your_table_name t1
JOIN your_table_name t2 
ON t1.DivID = t2.DivID 
AND t1.Account_Code = t2.Account_Code 
AND t1.Name = t2.Name 
AND t1.id > t2.id;

这条语句会保留每组重复中id较小的那一行,删除其余重复行。

PostgreSQL

方法1:窗口函数结合ctid

PostgreSQL中可以用内置的ctid作为行的唯一标识:

WITH cte AS (
    SELECT 
        ctid,
        ROW_NUMBER() OVER (PARTITION BY DivID, Account_Code, Name ORDER BY ctid) AS rn
    FROM your_table_name
)
DELETE FROM your_table_name
WHERE ctid IN (SELECT ctid FROM cte WHERE rn > 1);

方法2:USING关键字删除

同样利用ctid来区分重复行:

DELETE FROM your_table_name t1
USING your_table_name t2
WHERE t1.DivID = t2.DivID 
AND t1.Account_Code = t2.Account_Code 
AND t1.Name = t2.Name 
AND t1.ctid > t2.ctid;

SQL Server

使用窗口函数是最常用的方式:

WITH cte AS (
    SELECT 
        DivID, Account_Code, Name,
        ROW_NUMBER() OVER (PARTITION BY DivID, Account_Code, Name ORDER BY (SELECT NULL)) AS rn
    FROM your_table_name
)
DELETE FROM cte WHERE rn > 1;

重要提醒

  • 执行删除操作前一定要备份数据,或者先把DELETE语句换成SELECT *来验证要删除的行是否正确,避免误删。
  • 把所有语句中的your_table_name替换成你实际的表名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:31:51