INSERT 或 UPDATE ,簡稱 Upsert 。最近有個需求是要將 A 資料表的內容倒入 B 資料表, Upsert 這時候就派上用場了! 如果指定欄位相同就更新,找不到就新增。只是平常看到的解法都只能一筆一筆,這次使用 MERGE 實現多筆 Upsert ,特此紀錄。
範例資料表:
多筆大量 Upsert 語法:
範例資料表:
create table users
(
user_id int not null,
user_name nvarchar(100) not null,
)
多筆大量 Upsert 語法:
MERGE INTO users AS target
USING (VALUES (1, N'小明'),
(2, N'老王'),
(3, N'大華'),
(4, N'阿梅'),
(5, N'老吳')
) AS source (user_id, user_name)
ON target.user_id = source.user_id
WHEN MATCHED THEN
UPDATE
SET target.user_name = source.user_name
WHEN NOT MATCHED THEN
INSERT (user_id, user_name)
VALUES (source.user_id, source.user_name);
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com