我正在按子查询更新表列。。。但子查询恰好是插入表达式,它的语法无效。
那么如何做到这一点:
UPDATE table
SET column = (
INSERT otherTable (otherColumn)
OUTPUT inserted.ID
VALUES ('foo')
)
从功能的Angular 来看≈等于有效查询:
UPDATE table
SET column = (
Select ot.ID
From otherTable ot
where ot.otherColumn = table.anotherOne
)
2条答案
按热度按时间dauxcl2d1#
在sqlserver中有一个可组合dml的概念。这允许使用如下语法
但它非常有限,不允许将
OUTPUT
从句到另一从句UPDATE
.如果尝试,则返回错误消息
是
对于不是insert语句行的直接源的select语句,不允许嵌套insert、update、delete或merge语句。
您需要捕获
OUTPUT
子句,并在UPDATE
.或者可能只是使用
SCOPE_IDENTITY()
如果inserted.ID
是一个IDENTITY
列,您总是插入一行。vvppvyoh2#
您需要使用连接执行更新。