感谢任何帮助。我正在研究设计有点差的数据库。我需要通过更新一个基于另一个表的表来修复一些不良数据,如下所示(我正在松散地描述我需要的SQL):
两张桌子:
Airports
- 包括字段:lat
,lon
,airport_id
。Events
- 包括字段:lat
,lon
,airport_id
。我想将(当前不正确的)事件表lat
和lon
更新到(正确的)机场表lat和lon。
基本上:UPDATE events WHERE <events.airport_id = airports.airport_id> SET events.lat = airports.lat
然后我可以再次为lon运行它。
我知道我很接近,但没有确切的语法。
谢谢!
答案 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
子句。