FROM内部的SQL SELECT语句,带有INNER JOIN

时间:2014-01-21 17:41:02

标签: sql sql-server-2008 join

我正在编写一个存储过程,其中包含一些变量和一个临时表。

我正在尝试执行以下操作:

INSERT INTO table1(
    col1,
    col2,
    col3,
SELECT
    @col1,
    t2.col2,
    t3.col3
FROM
    #table2 t2, 
         (SELECT * 
          FROM table4 t4 
          INNER JOIN #table2 t2 ON t4.ID = t2.ID) t3

然而,说t2t3有5行,上面插入5 * 5 = 25行,其中它应该只是5.这似乎是一个交叉产品正在计算中FROMt2之间的t3,我无法确定原因。

2 个答案:

答案 0 :(得分:1)

你确定你应该使用逗号而不是实际的连接吗?这可能是导致交叉产品的原因,而不是连接行的选择。

答案 1 :(得分:1)

这是你打算做的吗?

INSERT INTO table1(col1, col2, col3)
    SELECT @col1, t2.col2, t3.col3
    FROM table4 t4 INNER JOIN
         #table2 t2
         ON t4.ID = t2.ID;

您的原始查询额外引用了#table2