1

どんな助けにも感謝します。私は少し不十分に設計されたデータベースに取り組んでいます。次のように、あるテーブルを別のテーブルに基づいて更新することにより、いくつかの不良データを修正する必要があります (必要な SQL を大まかに説明しています)。

2 つのテーブル:

  • Airports- 次のフィールドが含まれます: latlonairport_id
  • Events- 次のフィールドが含まれます: latlonairport_id

lat(現在正しくない) イベント テーブルとlon、(正しい) 空港テーブルの緯度と経度を更新したいと考えています。

基本的: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

はい、あなたは近くにいますが、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句を含めることもできます。

于 2013-04-05T21:56:43.603 に答える