2013-04-05 76 views
1

感谢所有帮助另一个表匹配的字段。我正在研究设计得有点差的数据库。我需要通过更新基于另一个表如下修正一些错误数据(我松散的描述我所需要的SQL):SQL帮助 - 在一个表中更新某个字段基于匹配不同的字段

两个表:

  • Airports - 包括字段:latlonairport_id
  • Events - 包括字段:latlon,airport_id

我想更新(目前不正确的)事件表latlon的(正确的)机场表纬度和经度。

基本上是:UPDATE events WHERE <events.airport_id = airports.airport_id> SET events.lat = airports.lat

然后,我可以为LON再次运行。

我知道我很近,但不存在与确切的语法。

谢谢!

回答

0

是的,你是接近,但你需要UPDATEJOIN。以下是一个正确的语法:

UPDATE events AS e 
INNER JOIN Airports AS a ON e.airport_id = a.airport_id 
SET e.lat = a.lat, 
    e.lon = a.lon; 

你把表引用,这是UPDATE子句中指定与JOIN版表格直接UPDATE条款后,然后将SET条款后,您还可以更新的表最后包含一个可选的WHERE子句。

+0

这做到了!非常感谢您的及时帮助!全部修好! – user2250813 2013-04-05 22:10:02

+0

@ user2250813 - 欢迎你任何时候:),欢迎#1,请尽量接受的答案,如果你有帮助,通过检查答案左侧的标记。这在Stackoverflow中如何工作。 – 2013-04-05 22:18:40

1

这也应该工作:

UPDATE events e 
set e.lat = (select a.lat from airports a where a.airport_id = e.airport_id), 
     e.lon = (select a.lon from airports a where a.airport_id = e.airport_id) 
; 
相关问题