2012-07-16 42 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