gpt4 book ai didi

sql - groupby 和 count 如何在 sql 中工作

转载 作者:可可西里 更新时间:2023-11-01 08:00:50 24 4
gpt4 key购买 nike

1> 通过浏览器从logtest组中选择browser,count(*);

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

一组2行

2> 通过浏览器从logtest组中选择browser,count(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。 :)

最佳答案

一个选择关系给你一个结果集。如果您按字段对选择进行分组,则结果集中的行将按该字段分组,并且结果集中的每一行都将特定于结果组。

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

Type | Gender | Name

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

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

你会得到所有不是“ pig ”的动物。如果一行的 Type = 'pig',它将包含在结果中。

这个查询:

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

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

您可以使用 MySQL 中的 having 子句为您的组设置条件。

阅读更多 here

count(*)count(browser)的区别在于第一个会返回所有记录的条数,第二个会返回所有记录的条数其中不是(浏览器为空)

尝试在 browser 为 null 的地方插入一行,然后运行 ​​1) 和 2),这是最好的测试。

关于sql - groupby 和 count 如何在 sql 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4039194/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com