2015-07-10 62 views
2

我有一個select通過連接使用兩個表。我需要使用第二個表字段更新第一個表。選擇如下 使用連接更新單個表

select R.f1, Z.f2,R.f3 
FROM 
(select * From Table1 where f2<>'xx' and f3='z') R inner join 
(select * From Table2 where f3='xx')    Z 
ON R.f1⁼Z.f1 and R.f4=Z.f4 

我怎麼可以更新對應於同樣的選擇Table(SET R.f2 = Z.f2)的?

UPDATE 

(select * From Table1 where f2<>'xx' and f3='z') R inner join 
(select * From Table2 where f3='xx')    Z 
ON R.f1⁼Z.f1 and R.f4=Z.f4 
SET R.f2=Z.f2 

當我想,我得到的迴應是

的UPDATE的目標表R是不可更新

回答

1

您可以使用使用以下update語句的加入。 ...

update t 
    set t.Column = value 
    from Table t 
inner join OtherTable ot on t.Id = ot.TID 
where somecondition = true. 
1

您應該在table1上執行更新並將其加入第二個子查詢。來自第一個子查詢的table1的條件可以應用於where子句中:

UPDATE table1 r 
JOIN (SELECT * FROM table2 WHERE f3 = 'xx') z ON r.f1 ⁼ z.f1 AND r.f4 = z.f4 
SET r.f2 = z.f2 
WHERE r.f2 <> 'xx' AND r.f3 = 'z'