Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更新SQL属性_Sql_Oracle - Fatal编程技术网

更新SQL属性

更新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

我正在尝试更新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 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);