0

ここでは、テーブルの列から、宛先列に一意の制約がある新しいテーブルにデータを移行しようとしています。基本的に私はしようとしています:

INSERT INTO FooTable VALUES (SELECT BarTable.Code FROM BarTable)

FooTable には、ID とコード (一意の制約を持つ列) の 2 つの列しかありません。

しかし、BarTable.Code では、処理して新しい制約に適合させる必要がある重複した値がいくつかある可能性があります (コード = コード + 1 など)。

それを行う方法についてのアイデアはありますか?

MS SQL Server 2008 R2 を使用しています。

前もって感謝します。

4

2 に答える 2

1

MERGEコマンドを使用して、コードが一致する場合に別のレコードを挿入できます。

シナリオに基づく例を次に示します。

MERGE FooTable AS T
USING BarTable AS S
ON (T.Code = S.Code) 
WHEN NOT MATCHED BY TARGET 
    THEN INSERT(Code) VALUES(S.Code)
WHEN MATCHED 
    THEN INSERT(Code) VALUES(S.Code+1)
于 2013-04-25T20:13:53.087 に答える
0

使用できますNot Exists

INSERT INTO FooTable VALUES (SELECT distinct br.Code FROM BarTable br where NOT EXISTS(SELECT * FROM FooTable bs where br.code=bs.code  ) )
于 2013-04-24T19:07:52.973 に答える