Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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 - Fatal编程技术网

MySQL关于分组的混淆。为什么会这样?

MySQL关于分组的混淆。为什么会这样?,mysql,sql,Mysql,Sql,为什么这三个问题如此不同?根据MySQL文档,它们不都应该做相同的事情吗 select cc, max(c) as "Most Official Billingual Count" from ( select CountryCode as cc, count(*) as c from countrylanguage where isofficial = "T" group by cc ) t group by cc 以以下格式返回多行:CountryCode官方语言计数bla 但是如果

为什么这三个问题如此不同?根据MySQL文档,它们不都应该做相同的事情吗

select cc, max(c) as "Most Official Billingual Count" from (
  select CountryCode as cc, count(*) as c from countrylanguage where isofficial = "T"
  group by cc
) t group by cc
以以下格式返回多行:CountryCode官方语言计数bla

但是如果我删除一组

select cc, max(c) as "Most Official Billingual Count" from (
  select CountryCode as cc, count(*) as c from countrylanguage where isofficial = "T"

) t group by cc
它返回第一个国家代码以及总计数: ABW 238

这是:

select cc, max(c) as "Most Official Billingual Count" from (
  select CountryCode as cc, count(*) as c from countrylanguage where isofficial = "T"
  group by cc
) t 
将返回如下内容:ABW 4

我对这整群人的事感到很困惑

内部查询

  select CountryCode as cc, count(*) as c from countrylanguage where isofficial = "T
是否应返回所有国家代码并计算重复的国家代码?对吗?但它不能做到这一点。似乎我必须执行第一个队列才能获得所需的效果,这让我非常困惑

您的子查询:

select CountryCode as cc, count(*) as c from countrylanguage where isofficial = "T"
除非您没有按照相应的标准对记录进行分组,否则没有意义。您需要对记录进行分组,因为
WHERE
子句仅指示选择标准。要了解
groupby
,请参见此(DBMS是Oracle,但无所谓)。此外(我更喜欢阅读),你可以找到许多关于这方面的文章,例如


因此,如果您需要在计数之间找到
MAX
,您需要首先通过子查询中的
groupby
组合您的组。

谢谢,我明天醒来时会看视频