gpt4 book ai didi

sql - 删除重复项,保留其中一个,按分组

转载 作者:行者123 更新时间:2023-12-04 14:36:45 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How to delete duplicate rows in SQL Server?

(23 个回答)


2年前关闭。




我需要为每个表 id 删除所有重复项,但只有一个。像下面这样。我需要删除 01,02,03 的 valueid 上的所有重复项...

原来的:

id      | valueid   |   data
____________________________
01 | 1001 | datadata1
01 | 1002 | datadata2
01 | 1001 | datadata1
02 | 1323 | datamoredata123
02 | 1323 | datamoredata123
03 | 22123 | evenmoredata
03 | 24444 | andalsomore

应该像这样结束:
id      | valueid   |   data
____________________________
01 | 1001 | datadata1
01 | 1002 | datadata2
02 | 1323 | datamoredata123
03 | 22123 | evenmoredata
03 | 24444 | andalsomore

试图用这样的方法来做,但我不明白如何在 id 上对删除进行分组
WITH CTE AS(
SELECT valueid,
RN = ROW_NUMBER()OVER(PARTITION BY valueid ORDER BY valueid)
FROM tblvalues
)
DELETE FROM CTE WHERE RN > 1

有什么建议?

提前致谢

最佳答案

您需要添加 id列到 PARTITION :

WITH CTE AS(
SELECT valueid,
RN = ROW_NUMBER()OVER( PARTITION BY id, valueid ORDER BY data)
FROM tblvalues
)
DELETE FROM CTE WHERE RN > 1

这样你就可以删除重复的 valueid每个 id 的单独值.栏目 data确定删除哪些重复项。

关于sql - 删除重复项,保留其中一个,按分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54078401/

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