1

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

两张表:

  • Airports- 包括字段:lat, lon, airport_id.
  • Events- 包括字段:lat, lon, airport_id.

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

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

然后我可以再次运行它。

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

谢谢!

4

2 回答 2

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)
;
于 2013-04-05T22:22:30.020 回答
0

是的,你很接近,但你需要UPDATEwith 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子句中指定的更新表与JOINed 表直接放在子句之后,然后在该UPDATE子句之后SET,您还可以WHERE在末尾包含一个可选子句。

于 2013-04-05T21:56:43.603 回答