Sql子查询结果

时间:2014-09-23 16:06:17

标签: sql sql-server

我有3张桌子,A,B,C

  • 表A,列:latlong,名称

  • 表B,列:代码,名称

  • 表C,列:latlong,代码

我想用表B,列名中的值更新表A,列名,如:

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

请注意,所有列都不相关。

欣赏正确的方向。

尝试过使用内部联接的子查询,但没有好处。

4 个答案:

答案 0 :(得分:2)

您可以使用update使用join执行此操作:

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

答案 1 :(得分:1)

尝试使用INNER 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

答案 2 :(得分:0)

表A.Latlong = C.Latlong找不到正确的代码,缺少最后一个条件!

答案 3 :(得分:0)

您在问题中提到了以下内容:

  

我想用表B,列名

中的值更新表A,列名

但是我从您的查询中看到的是,实际上,您只需要表Name的列B的值,其值code与表{{}相同1}},C中的latlong应该与A中的latlong相同,如果我没有弄错的话。

基于此,我可以说对表CB的表C需要SQL JOIN 操作。像这样:

A

无需创建 SUBQUERY