插入时填充列

时间:2011-07-12 08:17:09

标签: tsql merge insert

如何使用我的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

我希望有人可以提供帮助。

1 个答案:

答案 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。