t1有一个名为pkId
INSERT INTO t1( title, summary)
OUTPUT inserted.pkId, t2.id INTO @IdTable(New_Id, Old_Id)
SELECT t2.title, t2.summary
FROM t2
有人可以告诉我为什么这不起作用吗?
我收到错误多部分标识符“t2.id”无法绑定。
答案 0 :(得分:3)
您无法从INSERT上的OUTPUT子句中获取t2中的值(您可以使用UPDATE和DELETE)。
from_table_name
是一个列前缀,用于指定DELETE,UPDATE或MERGE语句的FROM子句中包含的表,该语句用于指定要更新或删除的行。
请注意,未提及INSERT
你必须
答案 1 :(得分:0)
来自评论
它不起作用,因为你没有选择t2.id SELECT语句。为了使它工作,你应该添加t2.id到你的 声明,但这也需要你在t1中插入这个ID (我假设)不是你需要的。我还在思考如何解决 优雅的。
不是一个优雅的解决方案,但最简单的可能是
t2ID
t1
列
INSERT
以包含t2ID
(不使用OUTPUT
条款)@IdTable
ALTER TABLE t1 ADD COLUMN t2ID INTEGER NULL
GO
INSERT INTO t1( title, summary, t2ID)
SELECT t2.title, t2.summary, t2.ID
FROM t2
INSERT INTO @IdTable
SELECT pkID, t2ID
FROM t1
WHERE t2ID IS NOT NULL
GO
ALTER TABLE t1 DROP COLUMN t2ID
GO