2009-11-10 51 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