如何使用我的INSERT语句中列col5 table @ t2中的值填充表#tt中的列colNEW? 我当前的表达式可以重用,还是必须使用merge?
我使用的是mssql server 10.
DECLARE @t1 TABLE (id INT IDENTITY(1,1), col1 INT, col2 INT)
DECLARE @t2 TABLE (col3 INT, col4 INT, col5 INT)
INSERT @t2 VALUES (1,2,3);INSERT @t2 VALUES (2,3,4)
CREATE TABLE #tt (id INT, col3 INT, col4 INT, colNEW int)
INSERT #tt (id, col3, col4)
SELECT *
FROM
(
INSERT INTO @t1(col1,col2)
OUTPUT Inserted.id, Inserted.col1,Inserted.col2
SELECT col3, col4
FROM @t2
) t
我希望有人可以提供帮助。
答案 0 :(得分:2)
你必须使用合并:
DECLARE @t1 TABLE (id INT IDENTITY(1,1), col1 INT, col2 INT)
DECLARE @t2 TABLE (col3 INT, col4 INT, col5 INT)
INSERT @t2 VALUES (1,2,3);INSERT @t2 VALUES (2,3,4)
CREATE TABLE #tt (id INT, col3 INT, col4 INT, colNEW int)
INSERT #tt (id, col3, col4,colNew)
SELECT *
FROM
(
MERGE INTO @t1 t1
using @t2 t2 on 1=0
when not matched then INSERT (col1,col2)
VALUES(t2.col3, t2.col4 )
OUTPUT Inserted.id, Inserted.col1,Inserted.col2,t2.col5
) t
select * from #tt
这是对MERGE
的轻微误用 - 我只使用它,因为它允许在OUTPUT
子句中引用其他表 - 而不是{for insert){{1} } table。