2014-09-23 149 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拿起正确的代码!