SQL帮助 - 基于匹配不同的字段更新一个表中的字段以匹配另一个表中的字段

时间:2013-04-05 21:54:17

标签: mysql sql phpmyadmin

感谢任何帮助。我正在研究设计有点差的数据库。我需要通过更新一个基于另一个表的表来修复一些不良数据,如下所示(我正在松散地描述我需要的SQL):

两张桌子:

  • Airports - 包括字段:latlonairport_id
  • Events - 包括字段:latlonairport_id

我想将(当前不正确的)事件表latlon更新到(正确的)机场表lat和lon。

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

然后我可以再次为lon运行它。

我知道我很接近,但没有确切的语法。

谢谢!

2 个答案:

答案 0 :(得分: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)
;

答案 1 :(得分:0)

是的,您已经离我很近,但您需要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 ed表直接放在UPDATE子句之后,然后SET在子句中,您还可以在末尾包含可选的WHERE子句。