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

不确定我是否完全正确地回答了您的问题,但您可以使用MERGET-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 回答