5

我找不到合适的方法来删除 sql 表中编号最小的重复键。如果有相同编号的重复行,我需要删除其中一个。

例如

Key     Number  Description

11111   5   Desc1
11111   4   Desc2
22222   2   Desc1
22222   2   Desc2
33333   3   Desc1
33333   5   Desc2

在这里,我需要删除编号为 4 的第二行,它小于编号 5,第三行或第四行之一,第五行的编号 3 小于最后一行 5。

4

2 回答 2

6

查询以删除 SQL-Server 中的重复项:

;with c as
(
    select *, row_number() over(partition by [Key] order by Number desc) as n
    from YouTable
)
delete from c
where n > 1
于 2013-04-01T11:32:10.597 回答
2
DELETE FROM ztable dd
WHERE EXISTS (
  SELECT * FROM ztable ex
  WHERE ex.zkey = dd.zkey
  AND (ex.znumber > dd.znumber
       OR (ex.znumber = dd.znumber AND ex.description > dd.description)
       )
  );

注意:我将 key 和 number 重命名为 zkey 和 znumber 以避免与保留字/关键字混淆。ztable 类似。

于 2013-04-01T12:16:04.520 回答