我正在尝试更新Oracle表格中的列,以便每个Goals
的{{1}}列从播放器表格中的Game
获得平均目标,但我会继续获取以下错误消息:
“错误:ORA-01427:单行子查询返回多行”
我已经测试了查询,它返回的行数与goal_scored
以及正确的结果一样多。
这是我的代码:
Games
如果我跳过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
都获得相同的平均分数。
答案 0 :(得分:2)
在子选择中跳过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的问题评论。