2012-07-16 43 views
7

我想在更新語句中加入三個表,但到目前爲止我一直沒有成功。我知道這個查詢適用於連接兩個表:在更新語句中加入多個表

update table 1 
set x = X * Y 
from table 1 as t1 join table 2 as t2 on t1.column1 = t2.column1 

然而,在我的情況,我需要聯接三個表,以便:

update table 1 
set x = X * Y 
from table 1 as t1 join table 2 as t2 join table3 as t3 
on t1.column1 = t2.column1 and t2.cloumn2 = t3.column1 

將無法​​工作。我也試過以下查詢:

update table 1 
set x = X * Y 
from table 1, table 2, table 3 
where column1 = column2 and column2= column3 

有沒有人知道一種方法來完成這個?

+1

不Ÿ來自什麼表? – 2012-07-16 20:13:33

回答

14

您絕對不想使用table, table, table語法; here's why。至於你的中間代碼示例,連接語法遵循大致相同的SELECT規則,與UPDATE的規則相同。 JOIN t2 JOIN t3 ON ...無效,但JOIN t2 ON ... JOIN t3 ON有效。

因此,這裏是我的建議,但應更新爲完全限定,其中y來自:

UPDATE t1 
    SET x = x * y -- should either be t2.y or t3.y, not just y 
    FROM dbo.table1 AS t1 
    INNER JOIN table2 AS t2 
    ON t1.column1 = t2.column1 
    INNER JOIN table3 AS t3 
    ON t2.column2 = t3.column1; 
+0

謝謝,這是爲我做的。 – Rick 2012-07-17 12:57:05