从表中的多个重复项删除特定记录

时间:2019-03-05 16:34:21

标签: sql sql-server duplicates

如何从多个重复项中删除特定记录 下表是例如

enter image description here

这只是示例之一,我们有很多类似的情况。从此表中,我需要删除等级2和3。

请为我提供识别重复记录并删除特定行的最佳方法

3 个答案:

答案 0 :(得分:0)

这应该有效

delete
from <your table> t
where rank != (select top(rank)
              from <your table> tt
              where tt.emp_id = t.emp_id
               order by rank desc --put asc if you want to keep the lowest rank
               )
group by t.emp_id

答案 1 :(得分:0)

我不鼓励删除记录,但是此解决方案可以帮助删除记录或将其删除:

该表应具有唯一的ID和一个字段,该字段可让您标识记录已过期。如果没有,建议将其添加到表中。您可以在查询中创建一个复合ID,但一路走来,您希望拥有这些属性。

创建一个查询,以标识RANK <> 1所在的每条记录。这将是您的子查询。

编写您的UPDATE查询

$

**如果您确实要删除记录,请使用以下方法:

UPDATE A
SET [EXPIRE_DTTM] = GETDATE()
FROM *TableNameWithTheRecords* A
INNER JOIN (*SubQuery*) B ON A.UniqueID = B.UniqueID

答案 2 :(得分:0)

 WITH tbl_alias AS
    (
       SELECT emp_ID,
           RN = ROW_NUMBER() OVER(PARTITION BY emp_ID ORDER BY emp_ID)
       FROM tblName
    )
    DELETE FROM tbl_alias WHERE RN > 1