SQL帮助 - 在一个表中更新某个字段基于匹配不同的字段
问题描述:
感谢所有帮助另一个表匹配的字段。我正在研究设计得有点差的数据库。我需要通过更新基于另一个表如下修正一些错误数据(我松散的描述我所需要的SQL):SQL帮助 - 在一个表中更新某个字段基于匹配不同的字段
两个表:
-
Airports
- 包括字段:lat
,lon
,airport_id
。 -
Events
- 包括字段:lat
,lon
,airport_id
。
我想更新(目前不正确的)事件表lat
和lon
的(正确的)机场表纬度和经度。
基本上是:UPDATE events WHERE <events.airport_id = airports.airport_id> SET events.lat = airports.lat
然后,我可以为LON再次运行。
我知道我很近,但不存在与确切的语法。
谢谢!
答
是的,你是接近,但你需要UPDATE
与JOIN
。以下是一个正确的语法:
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
子句。
答
这也应该工作:
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)
;
这做到了!非常感谢您的及时帮助!全部修好! – user2250813 2013-04-05 22:10:02
@ user2250813 - 欢迎你任何时候:),欢迎#1,请尽量接受的答案,如果你有帮助,通过检查答案左侧的标记。这在Stackoverflow中如何工作。 – 2013-04-05 22:18:40