更新SQL属性
我正在尝试更新Oracle表中的一列,以便每个更新SQL属性,sql,oracle,Sql,Oracle,我正在尝试更新Oracle表中的一列,以便每个游戏的Goals列从玩家表中的goal\u scored接收平均得分,但我一直收到以下错误消息: “错误:ORA-01427:单行子查询返回多行” 我已经测试了这个查询,它返回的行数是游戏的10行数,也是正确的结果 这是我的代码: UPDATE GEN SET Goals = (Select AVG(goal_scored) FROM Player, Gen, Game WHERE Game.Name=Gen.Gameid AND P
游戏的Goals
列从玩家表中的goal\u scored
接收平均得分,但我一直收到以下错误消息:
“错误:ORA-01427:单行子查询返回多行”
我已经测试了这个查询,它返回的行数是游戏的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);
如果我跳过分组,我不会得到错误,但所有游戏都会得到相同的平均分数。跳过子选项中的Gen
(但保留在where
子句中):
这解决了你的语法错误,但我觉得这不是你想要的。
请参阅Ed Gibbs的问题注释。我在嵌套查询中看到一种交叉连接,在这里:来自Player、Gen、Game
设置目标=
后的子查询必须仅返回一行和一个值。你的问题没有解释如何计算平均值——是按玩家计算的吗?如果没有,什么?您可以显示您的表结构吗?在选择单个aggr的查询中,您不需要GROUPBY。价值阿格。函数返回单个值,而不是多个值。您选择的结果将是一行无需分组。如果不是,那么这是一个错误的查询。@it初学者,请不要随意编辑问题:“Oracle”和“returns 10 rows”不是有效的候选代码格式。如果你编辑了文章,请在提交编辑之前记下标签、关键词以及询问/回答的内容。谢谢
UPDATE GEN
SET Goals = (Select AVG(goal_scored) FROM Player, Game
WHERE Game.Name=Gen.Gameid AND Player.Gameid=Game.Name);