gpt4 book ai didi

sql - 删除重复的行并更新引用

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

如何删除一个表中的重复行,并将另一表中的引用更新为其余行?复制仅发生在名称中。 Id列是Identity列。
例子:
假设我们有两个表DoublesData

Doubles table (
Id int,
Name varchar(50)
)

Data Table (
Id int,
DoublesId int
)
现在,我在Doubls表中有两个条目:
Id Name
1 Foo
2 Foo
以及数据表中的两个条目:
ID DoublesId
1 1
2 2
最后, double 表中应该只有一个条目:
Id Name
1 Foo
以及数据表中的两个条目:
Id DoublesId
1 1
2 1
在doubles表中,每个名称可以有任意数量的重复行(最多30个),也可以包含常规的“单”行。

最佳答案

我没有执行此操作,但希望它应该是正确的,并且距离最终解决方案足够近以使您到达那里。如果您愿意,请让我知道任何错误,我将更新答案。

--updates the data table to the min ids for each name
update Data
set id = final_id
from
Data
join
Doubles
on Doubles.id = Data.id
join
(
select
name
min(id) as final_id
from Doubles
group by name
) min_ids
on min_ids.name = Doubles.name

--deletes redundant ids from the Doubles table
delete
from Doubles
where id not in
(
select
min(id) as final_id
from Doubles
group by name
)

关于sql - 删除重复的行并更新引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1497183/

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