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    

ここで、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 に答える