我有一个带有两个表变量的存储过程(@temp和@ temp2)。
如何从两个临时表中选择值(两个表变量都包含一行)并将它们全部插入一个表中?
我尝试了以下但是这不起作用,我得到的错误是SELECT和INSERT语句的数量不匹配。
DECLARE @temp AS TABLE
(
colA datetime,
colB nvarchar(1000),
colC varchar(50)
)
DECLARE @temp2 AS TABLE
(
colD int
)
...
INSERT INTO MyTable
(
col1,
col2,
col3,
col4
)
SELECT colD FROM @temp2,
colA FROM @temp,
colB FROM @temp,
colC FROM @temp
非常感谢你提供任何帮助,蒂姆。
答案 0 :(得分:7)
由于两个表变量都有一行,您可以交叉连接它们。
INSERT INTO MyTable
(col1,
col2,
col3,
col4)
SELECT t.colA,
t.colB,
t.colC,
t2.colD
FROM @temp t
CROSS JOIN @temp2 t2
答案 1 :(得分:1)
如果表@temp and @temp2
中只有一行,则应使用此项,因为这是笛卡尔积。
INSERT INTO MyTable(col1,col2,col3,col4)
SELECT t.colA,
t.colB,
t.colC,
t2.colD
FROM @temp t,@temp2 t2