10 sql sql-server merge sql-server-2008-r2
这适合我
MERGE Table1 AS tgt
USING
(
SELECT
TOP 1
*
FROM
Table2,
(
SELECT
itmid
FROM
Table3
WHERE
id = @id
) as a
WHERE
id = @id
) AS src
ON ( tgt.id = src.id )
WHEN MATCHED THEN
UPDATE SET qty = qty + @qty
WHEN NOT MATCHED THEN
INSERT itmid
VALUES itmid;
Run Code Online (Sandbox Code Playgroud)
但是,当我这样改变时,它不起作用,最后显示错误 select
MERGE Table1 AS tgt
USING
(
SELECT
TOP 1
*
FROM
Table2
WHERE
id = @id
) AS src
ON ( tgt.id = src.id )
WHEN MATCHED THEN
UPDATE SET qty = qty + @qty
WHEN NOT MATCHED THEN
INSERT itmid
SELECT itmid FROM Table3 WHERE id = @id;
Run Code Online (Sandbox Code Playgroud)
根据MSDN文档
<merge_not_matched>::=
{
INSERT [ ( column_list ) ]
{ VALUES ( values_list )
| DEFAULT VALUES }
}
Run Code Online (Sandbox Code Playgroud)
INSERT 来自 SELECT like 的语法:
WHEN NOT MATCHED THEN
INSERT itmid SELECT itmid FROM Table3 WHERE id=@id;
Run Code Online (Sandbox Code Playgroud)
不被允许!
我会尝试解决你的另一个合并问题Table3.
| 归档时间: |
|
| 查看次数: |
46125 次 |
| 最近记录: |