gpt4 book ai didi

具有关系的表中的 SQL 复制行

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

希望有人可以帮助我,我想复制同一个表中的行,并且该表与另一个表有关系,我必须相应地复制相关行:

表1

       table1Id table0Id otherColumn 
1 3 8
2 3 9
3 4 6

我复制了 table0Id = 3 的行

表1
       table1Id table0Id otherColumn 
1 3 8
2 3 9
3 4 6
-------------------------
4 3 8
5 3 9

我想根据 Table1 Id 对 Table2 执行相同的操作,如下所示:

表2
       table2Id table1Id otherColomn
1 1 0
2 2 5
3 3 8

表2
       table2Id table1Id otherColomn
1 1 0
2 2 5
3 3 8
-----------------------
4 4 new Id 0
5 5 new Id 5

如您所见,第 1 行和第 2 行被复制到 table2 中,但它们具有来自 table1 中新添加的行的新 ID。
我知道如何做第一部分,但我被困在第二部分。

最佳答案

感谢您的回答,我通过使用输出和身份来解决这个问题:

Declare @temp table(tempId int,tempName nchar(10),tempOther bit, rownumber int identity)
insert into @temp select Id,Nam,other from dbo.Table_1 where Nam = 'ToCopy'

Declare @tempIds table(outputId int,rownumber int identity)

Declare @finalTemp table(OldId int,new_id int)

select * from dbo.Table_1
select * from dbo.Table_2

insert into dbo.Table_1
output inserted.Id into @tempIds
select tempName,tempOther from @temp


insert into @finalTemp
select oldT.tempId, newT.outputId
from @temp as oldT
join @tempIds as newT on oldT.rownumber = newT.rownumber

insert into dbo.Table_2(Table1Id)
select ftemp.new_id
from dbo.Table_2 t2
join @finalTemp ftemp on ftemp.OldId = t2.Table1Id


select * from dbo.Table_1
select * from dbo.Table_2

关于具有关系的表中的 SQL 复制行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13576930/

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