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基础(二)
Apr 05 MySQL
mysql字符串截取函数小结
Apr 05 MySQL
MySQL主从复制断开的常用修复方法
Apr 07 MySQL
MySQL sql_mode的使用详解
May 08 MySQL
解读MySQL的客户端和服务端协议
May 10 MySQL
Mysql基础知识点汇总
May 26 MySQL
MySQL 外键约束和表关系相关总结
Jun 20 MySQL
浅谈MySQL函数
Oct 05 MySQL
MySQL表类型 存储引擎 的选择
Nov 11 MySQL
面试提问mysql一张表到底能存多少数据
Mar 13 MySQL
mysql使用instr达到in(字符串)的效果
Apr 03 MySQL
MySQL中LAG()函数和LEAD()函数的使用
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
杏林同学录(八)
2006/10/09 PHP
PHP中ADODB类详解
2008/03/25 PHP
PHP实现根据浏览器跳转不同语言页面代码
2013/08/02 PHP
PHP捕获Fatal error错误的方法
2014/06/11 PHP
Laravel 5.5官方推荐的Nginx配置学习教程
2017/10/06 PHP
vmware linux系统安装最新的php7图解
2019/04/14 PHP
基于jquery的滚动鼠标放大缩小图片效果
2011/10/27 Javascript
jQuery实现根据类型自动显示和隐藏表单
2015/03/18 Javascript
JS特效实现图片自动播放并可控的效果
2015/07/31 Javascript
谈谈impress.js初步理解
2015/09/09 Javascript
javascript的正则匹配方法学习
2016/02/24 Javascript
javascript实现根据汉字获取简拼
2016/09/25 Javascript
JS 终止执行的实现方法
2016/11/24 Javascript
jquery做个日期选择适用于手机端示例
2017/01/10 Javascript
从零学习node.js之利用express搭建简易论坛(七)
2017/02/25 Javascript
微信小程序 商城开发(ecshop )简单实例
2017/04/07 Javascript
基于JavaScript实现淘宝商品广告效果
2017/08/10 Javascript
js精确的加减乘除实例
2017/11/14 Javascript
js阻止默认右键的下拉菜单方法
2018/01/02 Javascript
浅谈node模块与npm包管理工具
2018/01/03 Javascript
微信小程序实现星级评分和展示
2018/07/05 Javascript
详解vue中axios请求的封装
2019/04/08 Javascript
IE11下处理Promise及Vue的单项数据流问题
2019/07/24 Javascript
vue使用代理解决请求跨域问题详解
2019/07/24 Javascript
vue项目中引入Sass实例方法
2019/08/27 Javascript
AI小程序之语音听写来了,十分钟掌握百度大脑语音听写全攻略
2020/03/13 Javascript
python删除指定类型(或非指定)的文件实例详解
2015/07/06 Python
PyQt5每天必学之弹出消息框
2018/04/19 Python
Python爬虫包BeautifulSoup异常处理(二)
2018/06/17 Python
python射线法判断一个点在图形区域内外
2019/06/28 Python
python中urllib.request和requests的使用及区别详解
2020/05/05 Python
5 个强大的HTML5 API 函数推荐
2014/11/19 HTML / CSS
html5自定义video标签的海报与播放按钮功能
2019/12/04 HTML / CSS
Footshop乌克兰:运动鞋的最大选择
2019/12/01 全球购物
C#基础面试题
2016/10/17 面试题
自荐信格式范文
2015/03/04 职场文书