S H*_*son 5 t-sql sql-server merge
MERGE tbl_target t
USING tbl_source s
ON t.itemnum = s.itemnum
WHEN NOT MATCHED
INSERT (itemnum, minqty, maxqty, parent)
VALUES (s.itemnum,0,99,10),(s.itemnum,0,99,80);
Run Code Online (Sandbox Code Playgroud)
如果某个项目在目标上不存在但源上确实存在,我正在尝试在目标表上插入两行。每次我尝试 SQL Server 时都会在 VALUES 之间的“,”上给出错误。
MERGE 语句必须以分号 (;)
是否可以在 MERGE 语句中进行多行插入?
可以通过调整USING子句为每个tbl_source.itemnum值返回多行:
MERGE tbl_target t
USING (
select s.itemnum,
0 as minqty,
99 as maxqty,
p.parent
from tbl_source s
cross join (
select 10 as parent
union all
select 80 as parent) p
) s
ON t.itemnum = s.itemnum
WHEN NOT MATCHED THEN
INSERT (itemnum, minqty, maxqty, parent)
VALUES (s.itemnum,s.minqty,s.maxqty,s.parent);
Run Code Online (Sandbox Code Playgroud)