更新SQL属性



我正在尝试更新Oracle表中的列,以便每个GameGoals列从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的问题评论

最新更新