SQL Server:从两个表中选择并插入一个表

时间:2014-02-22 17:25:22

标签: sql sql-server multiple-instances multiple-tables insert-into

我有一个带有两个表变量的存储过程(@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

非常感谢你提供任何帮助,蒂姆。

2 个答案:

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