0

我写了一个游标,我需要在其中复制一些行并将其插入到只有 1 列不同的表中。比如说我有一个像这样的表A

Id     |    CID   |  Country  

 1           X           A    
 2           X           B     
 3           X           C    

此表中的“Id”是自动增量和主键,Country 是该 CID 访问的国家/地区。因此,当我被要求更新 CID 'X' 访问过的每个国家/地区也被 CID 'Y' 访问过的表格时。我写了一个游标并插入了 CID 'Y' 和国家。执行光标后,表 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中国家相同的AId,表B中的BeId肯定是一样的,有没有可能做到这一点?是这样,我怎样才能做到这一点?

4

1 回答 1

1

使用OUTPUT子句

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。

于 2013-11-11T14:08:47.767 回答