2013-04-05 82 views
1

感謝所有幫助另一個表匹配的字段。我正在研究設計得有點差的數據庫。我需要通過更新基於另一個表如下修正一些錯誤數據(我鬆散的描述我所需要的SQL):SQL幫助 - 在一個表中更新某個字段基於匹配不同的字段

兩個表:

  • Airports - 包括字段:latlonairport_id
  • Events - 包括字段:latlon,airport_id

我想更新(目前不正確的)事件表latlon的(正確的)機場表緯度和經度。

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

然後,我可以爲LON再次運行。

我知道我很近,但不存在與確切的語法。

謝謝!

回答

0

是的,你是接近,但你需要UPDATEJOIN。以下是一個正確的語法:

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子句。

+0

這做到了!非常感謝您的及時幫助!全部修好! – user2250813 2013-04-05 22:10:02

+0

@ user2250813 - 歡迎你任何時候:),歡迎#1,請儘量接受的答案,如果你有幫助,通過檢查答案左側的標記。這在Stackoverflow中如何工作。 – 2013-04-05 22:18:40

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) 
; 
相關問題