小编典典

groupby和count如何在sql中工作

sql

1> select browser,count(*) from logtest group by browser;

+-----------+----------+
| browser   | count(*) |
+-----------+----------+
| Firefox 3 |       14 |
| Unknown   |       11 |
+-----------+----------+

套装2排

2> select browser,count(browser) from logtest group by browser;

+-----------+----------------+
| browser   | count(browser) |
+-----------+----------------+
| Firefox 3 |             14 |
| Unknown   |             11 |
+-----------+----------------+

套装2排

3> select browser,count(browser) from logtest;

+-----------+----------------+
| browser   | count(browser) |
+-----------+----------------+
| Firefox 3 |             25 |
+-----------+----------------+

一组1行

为什么查询方式1>和2>会得到相同的结果?count(*)和count(somefiled)之间没有什么区别?

另外,查询2>和3>导致的结果不同,为什么 groupby 如此神奇?它是如何工作的?


更新:我正在使用MySQL5.1。:)


阅读 186

收藏
2021-04-28

共1个答案

小编典典

选择会给您一个结果集。如果按字段分组选择,则结果集的行将按该字段分组,并且结果集的每一行将特定于结果组。

例如,您有一个名为Animals的表,其中包含以下字段:

Type | Gender | Name

如果您正在运行此查询(例如在MySQL中):

 select Type, Gender, Name from Animals where Type <> 'Pig'

您会得到所有不是“猪”的动物。如果某行的Type =’pig’,则该行将包含在结果中。

该查询:

select Type, Gender, count(*) from Animals group by Type, Gender

将有这么多行:类型数*性别数

您可以通过使用MySQL中的hading子句为您的组创建条件。

在这里阅读更多

count(*)和之间的区别count(browser)是,第一个将返回所有记录的数量,第二个将返回其中的所有记录的数量not (browser is null)

尝试在其中插入一行,browser is null然后运行1)和2),这是最好的测试。

2021-04-28