gpt4 book ai didi

sql - 删除重复记录 SQL Server

转载 作者:行者123 更新时间:2023-12-01 11:43:30 25 4
gpt4 key购买 nike

请考虑以下场景

我有如下表格

Tag | Id | Client | ....and more columns
c 30 X
c 40 Y
c 50 X
c 60 A
c 30 B
c 40 C
d 50 D
d 70 E
d 80 X
d 90 Z
i 30 X
i 90 Z
i 100 X
i 40 M

我想从表中选择记录,如果 tag=i下面的行从结果集中删除

  i     30    X
i 90 Z

这是因为 id=90 的行已经出现了 tag=d 和 client=Z。但是排

i     40    M

即使 id=40 已经与 client=C 一起出现,也不能删除,因为 client 列值不同。

DELETE FROM myTable
WHERE tag=i AND id IN( SELECT id FROM myTable t1
INNER JOIN myTable t2
ON t1.id=t2.id
WHERE tag=d or tag=c )

最佳答案

您可以将以下 CTEROW_NUMBER 一起使用根据您的规则检测和删除重复项:

WITH CTE AS 
(
SELECT [Tag], [Id], [Client],
RN=ROW_NUMBER()OVER(PARTITION BY [Id], [Client] ORDER BY [Tag])
FROM dbo.Tags
)
DELETE FROM CTE
WHERE RN > 1
AND [Tag] = @Tag;

DEMO

删除这些记录:

TAG   ID    CLIENT   RN
i 30 X 2
i 90 Z 2

Over Clause

关于sql - 删除重复记录 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17313382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com