1> select browser,count(*) from logtest group by browser;
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;
select browser,count(browser) from logtest group by browser;
+-----------+----------------+ | browser | count(browser) | +-----------+----------------+ | Firefox 3 | 14 | | Unknown | 11 | +-----------+----------------+
3> select browser,count(browser) from logtest;
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'
您会得到所有不是“猪”的动物。如果某行的Type =’pig’,则该行将包含在结果中。
该查询:
select Type, Gender, count(*) from Animals group by Type, Gender
将有这么多行:类型数*性别数
您可以通过使用MySQL中的hading子句为您的组创建条件。
在这里阅读更多
count(*)和之间的区别count(browser)是,第一个将返回所有记录的数量,第二个将返回其中的所有记录的数量not (browser is null)。
count(*)
count(browser)
not (browser is null)
尝试在其中插入一行,browser is null然后运行1)和2),这是最好的测试。
browser is null