MySQL中distinct和count(*)的使用方法比较


Posted in MySQL onMay 26, 2021

首先对于MySQL的DISTINCT的关键字的一些用法:

1.在count 不重复的记录的时候能用到,比如SELECT COUNT( DISTINCT id ) FROM tablename;就是计算talbebname表中id不同的记录有多少条。

2,在需要返回记录不同的id的具体值的时候可以用,比如SELECT DISTINCT id FROM tablename;返回talbebname表中不同的id的具体的值。

3.上面的情况2对于需要返回mysql表中2列以上的结果时会有歧义,比如SELECT DISTINCT id, type FROM tablename;实际上返回的是 id与type同时不相同的结果,也就是DISTINCT同时作用了两个字段,必须得id与tyoe都相同的才被排除了,与我们期望的结果不一样。

4.这时候可以考虑使用group_concat函数来进行排除,不过这个mysql函数是在mysql4.1以上才支持的。

5.其实还有另外一种解决方式,就是使用,SELECT id, type, count(DISTINCT id) FROM tablename,虽然这样的返回结果多了一列无用的count数据(或许你就需要这个我说的无用数据),返回的结果是只有id不同的所有结果和上面的4类型可以互补使用,就是看你需要什么样的数据了。
DISTINCT的效率:

SELECT id, type, count(DISTINCT id) FROM  tablename;虽然这样的返回结果多了一列无用的count数据(或许你就需要这个我说的无用数据),SELECT id, type from tablename group by id;这样貌似也可以,用distinct的时候,如果它有索引,mysql会把它转成group by的方式执行。

 MySQL数据库对于COUNT(*)的不同处理会造成不同的结果,比如,

  执行:SELECT COUNT(*) FROM tablename;即使对于千万级别的数据mysql也能非常迅速的返回结果。 
  执行: SELECT COUNT(*) FROM tablename WHERE…..;mysql的查询时间开始攀升。 

网上查资料得知:当没有WHERE语句对于整个mysql的表进行count运算的时候,MyISAM类型的表中保存有总的行数,而当添加有WHERE限定语句的时候Mysql需要对整个表进行检索,从而得出count的数值,因此加上where条件的查询速度就会很慢了。
以上关于MySQL数据库的distinct以及count(*)的使用就介绍到这里了,希望本次的介绍能够带给您一些收获。

MySQL 相关文章推荐
MySQL 使用自定义变量进行查询优化
May 14 MySQL
详解MySQL连接挂死的原因
May 18 MySQL
解决Navicat for Mysql连接报错1251的问题(连接失败)
May 27 MySQL
MySQL 5.7常见数据类型
Jul 15 MySQL
MySQL如何解决幻读问题
Aug 07 MySQL
MySQL数据库中varchar类型的数字比较大小的方法
Nov 17 MySQL
VS2019连接MySQL数据库的过程及常见问题总结
Nov 27 MySQL
Mysql多层子查询示例代码(收藏夹案例)
Mar 31 MySQL
navicat 连接Ubuntu虚拟机的mysql的操作方法
Apr 02 MySQL
MySQL示例讲解数据库约束以及表的设计
Jun 16 MySQL
MySql按时,天,周,月进行数据统计
Aug 14 MySQL
MySQL中出现乱码问题的终极解决宝典
如何设计高效合理的MySQL查询语句
May 26 #MySQL
虚拟机linux端mysql数据库无法远程访问的解决办法
May 26 #MySQL
正确使用MySQL INSERT INTO语句
May 26 #MySQL
正确使用MySQL update语句
May 26 #MySQL
详解MySQL集群搭建
MySQL中VARCHAR与CHAR格式数据的区别
May 26 #MySQL
You might like
PHP数组对比函数,存在交集则返回真,否则返回假
2011/02/03 PHP
ThinkPHP的RBAC(基于角色权限控制)深入解析
2013/06/17 PHP
php无限遍历文件夹示例分享
2014/03/04 PHP
CI框架AR操作(数组形式)实现插入多条sql数据的方法
2016/05/18 PHP
asp.net HttpHandler实现图片防盗链
2009/11/09 Javascript
js判断生效时间不得大于失效时间的思路及代码
2013/04/23 Javascript
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
跟我学习javascript的arguments对象
2015/11/16 Javascript
jQuery+formdata实现上传进度特效遇到的问题
2016/02/24 Javascript
Angular中$cacheFactory的作用和用法实例详解
2016/08/19 Javascript
Vue数据驱动模拟实现4
2017/01/12 Javascript
JavaScript实现时钟滴答声效果
2017/01/29 Javascript
php输出全部gb2312编码内的汉字方法
2017/03/04 Javascript
微信小程序网络请求wx.request详解及实例
2017/05/18 Javascript
Javascript将图片的绝对路径转换为base64编码的方法
2018/01/11 Javascript
NodeJS实现自定义流的方法
2018/08/01 NodeJs
JS实现的简单分页功能示例
2018/08/23 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
2018/08/31 Javascript
vue使用代理解决请求跨域问题详解
2019/07/24 Javascript
JavaScript中的null和undefined用法解析
2019/09/30 Javascript
vue开发移动端底部导航条功能
2020/04/08 Javascript
python实现12306火车票查询器
2017/04/20 Python
对Python3中的input函数详解
2018/04/22 Python
python删除字符串中指定字符的方法
2018/08/13 Python
Python/ArcPy遍历指定目录中的MDB文件方法
2018/10/27 Python
CentOS下Python3的安装及创建虚拟环境的方法
2018/11/28 Python
jupyter notebook 的工作空间设置操作
2020/04/20 Python
解决keras模型保存h5文件提示无此目录问题
2020/07/01 Python
HTML5基于flash实现播放RTMP协议视频的示例代码
2020/12/04 HTML / CSS
英国领先的新鲜松露和最好的松露产品供应商:TruffleHunter
2019/08/26 全球购物
struct和class的区别
2015/11/20 面试题
介绍一下linux的文件系统
2012/03/20 面试题
应聘教师推荐信
2013/10/31 职场文书
自我推荐书
2013/12/04 职场文书
化妆品活动策划方案
2014/05/23 职场文书
工作年限证明模板
2014/11/01 职场文书