我想删除表格中的重复行。它应该保留第一个,或者一个在顶部,如果有任何其他重复,则应删除它。
如图所示,有两个12和两个13.所以保留数据库中的前12个,如果有任何其他删除它们同样适用于13或任何ID。
我的想法:
DELETE from [Table]
WHERE [ID]
HAVING COUNT(TABLE.ID) > 1;
答案 0 :(得分:3)
您可以尝试使用CTE和ROW_NUMBER。
公用表表达式(CTE)可以被认为是临时表 在单个执行范围内定义的结果集 SELECT,INSERT,UPDATE,DELETE或CREATE VIEW语句。 CTE是 类似于派生表,因为它不存储为对象和 仅持续查询的持续时间。与派生表不同,a CTE可以是自引用的,可以多次引用 相同的查询。
像
这样的东西;WITH DeleteRows AS (
SELECT *,
ROW_NUMBER() OVER(PARTITION BY ID ORDER BY ID) RowID
FROM [Table]
)
DELETE from DeleteRows
WHERE RowID > 1