SQL UPDATE的正确语法,其中要设置的值是SELECT

时间:2009-11-10 17:19:02

标签: sql

有人能否直截了当地说明这句话的正确语法?

我正在尝试更新表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 

当然会欣赏这一课!

1 个答案:

答案 0 :(得分: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 )

关键点是子选择必须在括号中,并且你想要在子选择中包含目标表,因为那时你选择了表的所有行而您只关心与holes中相应行匹配的rounds行。