Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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/5/sql/72.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
MySQL,返回单个结果_Mysql_Sql_Mysql Workbench_Having - Fatal编程技术网

MySQL,返回单个结果

MySQL,返回单个结果,mysql,sql,mysql-workbench,having,Mysql,Sql,Mysql Workbench,Having,我面对着一张球员的桌子,看起来是这样的: 此处的表格图像: 我试图返回的球员谁发挥了高于平均水平的总播放时间,我试图使用何处,而不是有,但我得到了一个语法错误。我的代码只返回一个玩家,而不是在平均总播放时间内播放的所有玩家: SELECT player.player_name, player.player_team, player.minutes_played FROM player HAVING player.minutes_played > AVG(p

我面对着一张球员的桌子,看起来是这样的:

此处的表格图像:

我试图返回的球员谁发挥了高于平均水平的总播放时间,我试图使用何处,而不是有,但我得到了一个语法错误。我的代码只返回一个玩家,而不是在平均总播放时间内播放的所有玩家:

SELECT player.player_name, player.player_team, player.minutes_played 
     FROM player 
         HAVING player.minutes_played > AVG(player.minutes_played);

为什么它只返回一个?这是拥有的本质吗?

你想要的是这样的:

SELECT p.player_name, p.player_team, p.minutes_played 
FROM player p
HAVING p.minutes_played > (SELECT AVG(p2.minutes_played) FROM player p2);
您的查询发生了什么?首先,我应该注意到问题是
AVG(minutes\u played)
,而不是
本身具有
子句。MySQL有一个扩展,其中一个
HAVING
子句本质上被视为
where
——用于一个没有聚合的查询

但是,您的查询具有聚合。它在HAVING子句中有
AVG()
。这会将查询转换为聚合查询,因为没有
分组依据
,因此查询只返回一行(不计算具有的

这就引出了一个问题,那一行中有哪些值。返回任意和不确定行中的列。这也是一个MySQL扩展


您编写的查询不是标准SQL,但由于有两个扩展,MySQL接受了它。这样做时,查询是一个聚合查询,没有
分组依据
,因此查询返回一行(如果不满足
具有
条件,则可能返回零行)。

不发布图像。将相关信息放在文本中,以便与GROUP BY一起使用-为什么不直接使用WHERE?分享你得到的错误-这是基于你所分享的内容的方法。我之所以使用have而不是have,是因为错误代码:1111。组函数的使用无效。我想我之所以会出现这个错误,是因为你不能在聚合函数上使用WHERE(比如使用AVG())。这似乎是可行的-谢谢你的额外解释@Gordon Linoff!与您的评论相反,groupby似乎不需要返回多个查询。我不完全确定返回任意和不确定行是什么意思,为什么这是一个MySQL扩展?此代码在其他RDBMS中不起作用吗?@will.i.may.be。此代码在其他数据库中不起作用。