sql - 仅使用一个查询删除重复记录

标签 sql sql-server-2005

我正在使用 SQL Server 2005。

我有一张这样的 table ——

ID    Name
1      a
1      a
1      a
2      b
2      b
3      c
4      d
4      d

在此,我想删除所有重复条目并仅保留一个实例作为-
ID     Name
1       a
2       b
3       c
4       d

我可以通过向该表添加另一个标识列并在其中包含唯一编号然后删除重复记录来轻松完成此操作。但是我想知道是否可以删除重复记录不添加额外的列 到这张 table 。

此外,如果这可以仅使用一个查询语句来完成。即 不使用存储过程或临时表。

最佳答案

使用 ROW_NUMBERCTE允许您在保留唯一行的同时删除重复值。

WITH q AS (
  SELECT RN = ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ID )
         , ID
         , Name
  FROM   ATable
)
DELETE FROM q WHERE RN > 1

关于sql - 仅使用一个查询删除重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5324563/

相关文章:

sql - SQL Server 中的窗口函数

sql - 您应该如何使用仅包含日期的值针对类型为 "DateTime"的列构造 SQL 搜索条件?

sql - 根据顺序选择和汇总最后的记录

mysql - MySQL 中何时使用单引号、双引号和反引号

mysql - 如何从一个表中过滤掉其id出现在另一个表的列中的记录

MySQL 将行转为动态数量的列

asp.net - 使用 xml 类型在 SQL Server 2005 中存储 XSLT?

python - python中的SQL输出-如何将数据框中的所有元组转换为字符串

sql-server-2005 - 停止 SQL Server 2005 重建索引

c# - 调用同一个 sql server 2005 存储过程的多个 asp.net 请求