2009-11-10 49 views
1

有人能爲我設置正確的語句嗎?SQL UPDATE的正確語法,其中要設置的值是SELECT

我試圖更新表rounds一個新的領域,在表holes平均場的地方rounds.id存儲爲外鍵。

UPDATE `rounds` SET drivingDistance_avg_per_hole = 
SELECT SUM(holes.drivingDistance)/COUNT(holes.drivingDistance) as avg 
FROM `holes`, `rounds` 
WHERE holes.drivingDistance != '' 
AND holes.round = rounds.id 

當然會感激這個教訓!

回答

2

取決於您的數據庫。標準SQL沒有UPDATE的FROM語法,有些數據庫不支持它。在這種情況下,這應該工作:

UPDATE `rounds` SET drivingDistance_avg_per_hole = (
SELECT SUM(holes.drivingDistance)/COUNT(holes.drivingDistance) as avg 
FROM `holes` 
WHERE holes.drivingDistance != '' 
AND holes.round = rounds.id) 

的關鍵點是子選擇必須是在括號,和你想在子選擇目標表,因爲那時你選擇表中的所有行,而您只關心與rounds中相應行相匹配的行holes

+0

非常感謝!我絕對學到了新東西! – jerrygarciuh 2009-11-10 17:42:05