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官方性能测试工具mysqlslap的使用简介
May 21 MySQL
mysql外连接与内连接查询的不同之处
Jun 03 MySQL
MySQL 数据恢复的多种方法汇总
Jun 21 MySQL
MySQL高速缓存启动方法及参数详解(query_cache_size)
Jul 01 MySQL
MySQL中的引号和反引号的区别与用法详解
Oct 24 MySQL
关于mysql中时间日期类型和字符串类型的选择
Nov 27 MySQL
mysql分组后合并显示一个字段的多条数据方式
Jan 22 MySQL
一条 SQL 语句执行过程
Mar 17 MySQL
分享MySQL常用 内核 Debug 几种常见方法
Mar 17 MySQL
Mysql将字符串按照指定字符分割的正确方法
May 30 MySQL
MySQL导致索引失效的几种情况
Jun 25 MySQL
了解MySQL查询语句执行过程(5大组件)
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 友好URL的实现(吐血推荐)
2008/10/04 PHP
php如何实现只替换一次或N次
2015/10/29 PHP
简单介绍PHP非阻塞模式
2016/03/03 PHP
用js调用迅雷下载代码的二种方法
2013/04/15 Javascript
Angularjs基础知识及示例汇总
2015/01/22 Javascript
javascript实现的固定位置悬浮窗口实例
2015/04/30 Javascript
js实现网页收藏功能
2015/12/17 Javascript
jQuery实现ajax的叠加和停止(终止ajax请求)
2016/08/08 Javascript
微信小程序 获取相册照片实例详解
2016/11/16 Javascript
实现隔行换色效果的两种方式【实用】
2016/11/27 Javascript
JavaScript获取当前时间向前推三个月的方法示例
2017/02/04 Javascript
Javascript面试经典套路reduce函数查重
2017/03/23 Javascript
javascript编程开发中取色器及封装$函数用法示例
2017/08/09 Javascript
详解使用angular的HttpClient搭配rxjs
2017/09/01 Javascript
js类的继承定义与用法分析
2019/06/21 Javascript
更优雅的微信小程序骨架屏实现详解
2019/08/07 Javascript
js cavans实现静态滚动弹幕
2020/05/21 Javascript
jquery实现上传图片功能
2020/06/29 jQuery
[00:27]DOTA2荣耀之路2:Patience from zhou!
2018/05/24 DOTA
跟老齐学Python之用while来循环
2014/10/02 Python
python使用chardet判断字符串编码的方法
2015/03/13 Python
Python 元类实例解析
2018/04/04 Python
python检测主机的连通性并记录到文件的实例
2018/06/21 Python
python抖音表白程序源代码
2019/04/07 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
2019/06/24 Python
python logging模块的使用总结
2019/07/09 Python
PyQt5多线程刷新界面防假死示例
2019/12/13 Python
Django模板之基本的 for 循环 和 List内容的显示方式
2020/03/31 Python
英国床垫在线:Mattress Online
2016/12/07 全球购物
西班牙土拨鼠床垫公司,感觉在云端:Marmota
2019/03/18 全球购物
土木工程毕业生自荐信
2013/09/21 职场文书
财务管理专业应届毕业生求职信
2013/09/22 职场文书
机械机修工岗位职责
2014/08/03 职场文书
先进事迹演讲稿
2014/09/01 职场文书
优秀教师单行材料
2014/12/16 职场文书
python处理json数据文件
2022/04/11 Python