我找不到合适的方法来删除编号最小的sql表中的重复键。如果存在具有相同Number的重复行,我需要删除其中一个。
例如
Key Number Description
11111 5 Desc1
11111 4 Desc2
22222 2 Desc1
22222 2 Desc2
33333 3 Desc1
33333 5 Desc2
这里我需要删除第4行,第4行小于第5行,第3行或第4行之一,第5行第3行,第3行,第3行,最后第5行。
答案 0 :(得分: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
答案 1 :(得分: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)
)
);
注意:我将密钥和编号重命名为zkey和znumber,以避免与保留字/关键字混淆。类似于ztable。