有人能否直截了当地说明这句话的正确语法?
我正在尝试更新表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
当然会欣赏这一课!
答案 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
行。