我正在尝试更新Oracle表中的列,以便每个Game
的Goals
列从Player表中的goal_scored
接收平均进球,但我一直得到以下错误消息:
"错误:ORA-01427:单行子查询返回多行"
我已经测试了查询,它返回了与Games
一样多的10行以及正确的结果。
这是我的代码:
UPDATE GEN
SET Goals = (Select AVG(goal_scored) FROM Player, Gen, Game
WHERE Game.Name=Gen.Gameid AND Player.Gameid=Game.Name
GROUP BY Player.Gamename);
如果我跳过GROUP BY
,我不会得到错误,但所有Game
得到相同的平均分数。
在子选择中跳过Gen
(但保留在where
子句中):
UPDATE GEN
SET Goals = (Select AVG(goal_scored) FROM Player, Game
WHERE Game.Name=Gen.Gameid AND Player.Gameid=Game.Name);
这解决了你的语法错误,但我有一种感觉,这不是你想要的。参见Ed Gibbs的问题评论