2014-01-21 92 views
0

我在寫一個存儲過程,其中有一些變量和一個臨時表。FROM內部的SQL SELECT語句,INNER 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.好像在t2t3之間的FROM中計算了一個叉積,我無法確定原因。

+1

t2和t3之間似乎沒有指定連接條件 – Dan

+0

是的,這就是我的想法。所以我需要在'FROM'裏面加入't2'和't3'? – dursk

+0

例如:從#table2 t2內部連接(選擇...)t3開始t2。[field] = t3。[field]'。我不知道t2和t3之間的共同領域。 – Dan

回答

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

1

你確定你應該使用逗號而不是實際的連接嗎?這可能是導致交叉產品而不是從連接行中選擇的原因。