Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.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 理解sql中的简单计数逻辑_Mysql_Sql_Syntax_Count - Fatal编程技术网

Mysql 理解sql中的简单计数逻辑

Mysql 理解sql中的简单计数逻辑,mysql,sql,syntax,count,Mysql,Sql,Syntax,Count,我有一个非常基本的问题,我自己无法回答,但不应该占用你太多时间 下面的查询工作正常,它列出了所有的展览\类别\ id,并统计分配给每个类别的对象总数 我的问题是:它为什么这样做?我不明白这个问题。它说的是count(*)-为什么不给我不同展览类别id的总数(79),而是计算每个类别分配了多少个对象 以下是有问题的查询,以及实际输出的屏幕截图: SELECT eb.exhibition_category_id, count(*) AS total FROM exhibition_brand eb

我有一个非常基本的问题,我自己无法回答,但不应该占用你太多时间

下面的查询工作正常,它列出了所有的
展览\类别\ id
,并统计分配给每个类别的对象总数

我的问题是:它为什么这样做?我不明白这个问题。它说的是
count(*)
-为什么不给我不同展览类别id的总数(79),而是计算每个类别分配了多少个对象

以下是有问题的查询,以及实际输出的屏幕截图:

SELECT eb.exhibition_category_id, count(*) AS total 
FROM exhibition_brand eb 
GROUP BY eb.exhibition_category_id

希望我的要求是可以理解的,希望根据反馈改进我的帖子。
干杯

您的查询是一个基本聚合查询:

SELECT eb.exhibition_category_id, count(*) AS total
FROM exhibition_brand eb
GROUP BY eb.exhibition_category_id;
groupby
指定结果集将为
eb.exposition\u category\u id
的每个值包含一行。结果集由两列组成,一列是定义行的值。另一个是每个组中的行数计数。这就是
COUNT(*)
所做的

如果您想要不同的
eb.exposition\u category\u id的总计数
,那么您需要一行和
count(DISTINCT)


groupby
函数将
COUNT()按
eb.exhibition\u category\u id
进行分组,因此查询按
eb.exhibition\u category\u id
对记录进行分组,然后对相应的记录进行计数。

谢谢戈登,这确实帮助了我的理解
select count(distinct eb.exhibition_category_id)
from exhibition_brand eb;