2014-09-23 141 views
0

我有3個表中,A,B,C的Sql子查詢結果

  • 表A,柱:經緯度,名稱

  • 表B,柱:代碼,名稱

  • 表C,Columns:latlong,code

我想更新表A,列名與來自表B,列的值Na我喜歡:

update A set A.name = 
(select b.name 
from B where code = c.code) 
where a.latlong = c.latlong 

請注意,所有的列都沒有關係。

希望得到正確的發展方向。

已經嘗試了使用內部連接的子查詢,但沒有用。

回答

0

你已經在你的問題中提到以下幾點:

我想更新表A,從表B,列名

值列的名字,但我可以看到你查詢實際上,您只需要表B的列Name的那些值,其具有與表C中相同的值code,並且您的latlongA中應該與在012中的latlong相同,如果我沒記錯的話。

基於這一點,我可以說你需要JOIN表用於和BCA操作的SQL。事情是這樣的:

UPDATE A SET A.name = B.Name 
FROM A 
JOIN C 
ON C.latlong = A.latlong 
JOIN B 
ON B.code = C.code 

無需創建一個SUBQUERY

2

您可以使用join一個update做到這一點:

update a 
    set name = b.name 
    from a join 
     c 
     on c.latlong = a.latlong join 
     b 
     on b.code = c.code; 
1

與內部的try更新JOIN

update A set 
    A.name = B.name 
FROM A 
INNER JOIN C on C.latlong = A.latlong 
INNER JOIN B on B.code = C.code 
0

最後一個條件是缺少其中表A.Latlong = C.Latlong拿起正確的代碼!