mysql 分组之后如何统计记录条数, gourp by 之后的 count

您所在的位置:网站首页 怎么统计表格的行数 mysql 分组之后如何统计记录条数, gourp by 之后的 count

mysql 分组之后如何统计记录条数, gourp by 之后的 count

2023-04-09 17:58| 来源: 网络整理| 查看: 265

需要准备的工具:电脑,sql数据库。

1、首先新建一个test表,有id,name,second三个字段,其中name字段有重复数据。

2、输入“select name,max(second) from test group by name”语句,点击运行。

3、可以看到已经查询出按name分组后取出的second最大的一条记录。

4、以输入“select name,max(second) from test group by name order by max(second) desc”语句,按分组后second最大值进行降序。

5、如果想查询mysql分组后最小的一条记录,输入“select name,min(second) from test group by name”语句,点击运行即可。

count()是Mysql的内置函数,用于统计符合条件的行数。

一般用法:select count(*) from sql(sql语言)as name(别名)

select count(*) table_name

这里对count(1)和count(*)作对比

一般情况下,count(1)和count(*)返回的数据是相同的。

而效率方面也差不多。只是在有主键的情况下,count(*)是最快的。

两者都是记录null的行数

select count(a) from test 

-- 扫描a列的数据记录数,如果a上没有索引,则效率最差,并且如果a列包含null,则不会计数

2020-03-01

对于count的函数的使用,我们常见的一个错误是在括号内随意指定一个列去统计结果集的行数。但只有指定的行确实都是有值的时候,统计的才是实际的行数,否则可能统计的结果并不是实际的行数。而对于MyISAM存储引擎,如果某一列的值确实不可能为null时,MySQL内部就会将count()函数优化成count(*),若没有带where条件,此时计算速度是非常快的,因为此时没有实际的去计算表的行数。

总结: 对于MyISAM存储引擎,不带where条件的count(*)是非常快的。

技巧:

利用上述MyISAM的count(* )特性,加速一些特定查询条件的count()查询。

如:

对于select count(* ) from tablename where id 10可以做如下的反转查询:

select (select count(* ) from tablename) - count(* ) from tablename where id 10

因为这样在查询阶段MySQL将子查询当做一个常数来处理,大大减少了扫描的行数。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://outofmemory.cn/zaji/7537694.html



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3