gpt4 book ai didi

SQL 删除相同 ID 的记录,保留 1

转载 作者:行者123 更新时间:2023-12-04 06:28:26 25 4
gpt4 key购买 nike

奇怪的问题,我知道。我不想删除所有行并重新开始,但我们有一个开发数据库表,其中一些行具有重复的 ID,但值不同。

我想删除所有具有重复 ID 的记录,以便我可以强制新版本的表上的数据完整性并建立关系。目前,它是由代码(遗留)插入和生成的 ID。

从另一个问题我得到了这个:

delete 
t1
from
tTable t1, tTable t2
where
t1.locationName = t2.locationName and
t1.id > t2.id

但这不起作用,因为 ID 是相同的!

如何删除除一条 ID 相同的记录之外的所有记录?也就是说,删除具有相同ID的记录数> 1的地方?如果这是不可能的,那么删除所有具有重复 ID 的记录就可以了。

最佳答案

SQL Server 2005以上:

WITH    q AS
(
SELECT *,
ROW_NUMBER() OVER (PARTITION BY locationName ORDER BY id) rn
FROM tTable
)
DELETE
FROM q
WHERE rn > 1

关于SQL 删除相同 ID 的记录,保留 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5743273/

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