我写了一个游标,我需要复制一些行并将其插入一个只有1列不同的表中。比方说,我有一个像这样的表A
Id | CID | Country
1 X A
2 X B
3 X C
此表中的'Id'是自动增量和主键,Country是该CID访问的国家/地区。因此,当我被要求更新CID'X'访问过的每个国家/地区时,CID'X'也访问过该表。我写了一个光标并插入了CID'Y'和Country。在我执行光标后,表A变为:
Id | CID | Country
1 X A
2 X B
3 X C
4 Y A
5 Y B
6 Y C
现在还有另一个表B,如下所示,其中AId是引用A中的Id的外键。
AId | AgeOfKids
1 20
1 23
1 28
2 21
2 24
2 29
3 22
3 25
我希望能够在此表中添加行,使其成为:
AId | AgeOfKids
1 20
1 23
1 28
2 21
2 24
2 29
3 22
3 25
4 20
4 23
4 28
5 21
5 24
5 29
6 22
6 25
用语言解释,表A中具有相同国家/地区的AI必须在表B中具有相同的BeIds。是否可以实现此目的?是这样,我怎么能做到这一点?
答案 0 :(得分:1)
declare @t table (Id int not null,Country char(1) not null)
insert into TableA (CID,Country)
output inserted.id,inserted.Country into @t
select 'Y',Country from TableA where CID = 'X'
然后(应该是与上述相同批次的一部分):
insert into TableB (AId,AgeOfKids)
select t.ID,b.AgeOfKids
from @t t
inner join
TableA a
on
t.Country = a.Country and
a.CID = 'X'
inner join
TableB b
on
a.ID = b.AId
填充表B.