如何删除SQL Server中的所有重复行,包括原始行

问题描述 投票:0回答:1

如何删除 SQL Server 中的所有重复行,包括原始行。

我看到有很多方法可以在 SQL Server 中删除重复行。然而,最后总是剩下一原始行。 例如在 6 行的数据集中

Employee table

我有相同的 P-id 和 E_id,但有 3 个不同的 CarNumber。

P_id E_id 车号
11556 162611 MRSU5111853
11556 162611 MRSU5111853
11556 162611 MRSU5111853
11556 162611 MRSU5111852
11556 162611 MRSU5111852
11556 162611 MRSU5111851
with cte as
(select *, ROW_NUMBER() over(Partition by P_id, E_Id, CarNumber order by  P_id, E_Id, CarNumber) as rowNumber
from [Employee])
delete from cte where rowNumber > 1

运行此查询将返回 3 行不同的 carNumber 类似

P_id E_id 车号
11556 162611 MRSU5111853
11556 162611 MRSU5111852
11556 162611 MRSU5111851

然而,我只是想挽留

P_id E_id 车号
11556 162611 MRSU5111851

并删除其余部分。我怎样才能在不使用变量、参数的情况下获得它。该查询需要进入 SSIS 执行 SQL 任务,因此寻找简单的解决方案。 预先感谢。

我厌倦了CTE和子查询,但没有得到预期的结果。

sql-server ssis duplicates sql-delete
1个回答
0
投票

PARTITION BY
中删除车号将为您提供想要的结果

with cte as
(select *
  , ROW_NUMBER() over(Partition by P_id, E_Id order by  P_id, E_Id, CarNumber) as rowNumber
from [Employee])
delete from cte where rowNumber > 1

5 rows affected
SELECT * FROM Employee
P_id E_id 车号
11556 162611 MRSU5111851

小提琴

© www.soinside.com 2019 - 2024. All rights reserved.