SQL:删除重复项

前端之家收集整理的这篇文章主要介绍了SQL:删除重复项前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何从以下列方式设置的表中删除重复项?
unique_ID | worker_ID | date | type_ID

一个worker可以有多个与它们相关联的type_ID,我想删除任何重复的类型.如果有重复,我想删除具有最新条目的类型.

解决方法

函数row_number()的教科书候选:
;WITH x AS (
    SELECT unique_ID,row_number() OVER (PARTITION BY worker_ID,type_ID ORDER BY date) AS rn
    FROM   tbl
    )
DELETE FROM tbl
FROM   x
WHERE  tbl.unique_ID = x.unique_ID
AND    x.rn > 1

这也解决了(worker_ID,type_ID)上的一组欺骗共享相同日期的情况.
请参阅简化的demo on data.SE.

使用更简单的版本更新

事实证明,这可以简化:在sql Server中,您可以直接从CTE中删除

;WITH x AS (
    SELECT unique_ID,type_ID ORDER BY date) AS rn
    FROM   tbl
    )
DELETE x
WHERE  rn > 1
原文链接:https://www.f2er.com/mssql/83209.html

猜你在找的MsSQL相关文章