8

SQL Server データベースに複数の値を挿入する方法は何ですか? 通常、MySQL では次のようなクエリを使用します。

INSERT INTO table (column1, column2)
VALUES(value1, value2), (value3, value4)
ON DUPLICATE KEY UPDATE column2 = VALUES(value2);

を使用して SQL Server に複数の挿入を行う方法はありますMERGEか?

4

2 に答える 2

13
MERGE INTO YourTable T
   USING ( VALUES ( 'value1', 'value9' ), 
                  ( 'value3', 'value4' ) ) AS S ( column1, column2 )
      ON T.column1 = S.column1
WHEN MATCHED THEN 
   UPDATE
      SET column2 = S.column2
WHEN NOT MATCHED THEN
   INSERT ( column1, column2 ) VALUES ( column1, column2 );
于 2014-04-08T07:59:32.357 に答える
0

あなたの質問が正しいかどうかはわかりませんが、MERGE次のように T-SQL でステートメントを使用できます。

  1. 指定されたフィールドでソースの項目がターゲットの項目と一致しない場合は、ターゲットに挿入します。
  2. 指定されたフィールドでソースのアイテムがターゲットのアイテムと一致する場合、ターゲットの他のフィールドをソースの対応する値で更新します。

あなたの場合、マージは次のようになります。

merge yourtable as target
using
(select value1 a, value2 b
 union
 select value3 a, value4 b) as source
 on target.column1 = source.a
 when matched and target.column2 <> source.b
 then update 
 set target.col2 = source.b
 when not matched by target
 then
 insert (column1, column2) values (source.a, source.b);

この例ではハードコードされた値を使用していますが、別のテーブルから挿入する場合にも機能します。

于 2014-04-08T02:30:52.143 に答える