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 20 MySQL
MySQL触发器的使用
May 24 MySQL
新手入门Mysql--概念
Jun 18 MySQL
MySQL数据库必备之条件查询语句
Oct 15 MySQL
MySQL七种JOIN类型小结
Oct 24 MySQL
MYSQL 表的全面总结
Nov 11 MySQL
MySQL派生表联表查询实战过程
Mar 20 MySQL
Nebula Graph解决风控业务实践
Mar 31 MySQL
MySQL分区路径子分区再分区
Apr 13 MySQL
MySQ InnoDB和MyISAM存储引擎介绍
Apr 26 MySQL
mysql序号rownum行号实现方式
Dec 24 MySQL
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
May 08 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实现的遍历文件夹下所有文件,编辑删除
2010/01/05 PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
2012/07/17 PHP
PHP学习笔记(三):数据类型转换与常量介绍
2015/04/17 PHP
Laravel 之url参数,获取路由参数的例子
2019/10/21 PHP
用javascript获取地址栏参数
2006/12/22 Javascript
使用js获取QueryString的方法小结
2010/02/28 Javascript
jQuery入门第一课 jQuery选择符
2010/03/14 Javascript
跨浏览器的 mouseenter mouseleave 以及 compareDocumentPosition的使用说明
2010/05/04 Javascript
用js实现控件的隐藏及style.visibility的使用
2013/06/14 Javascript
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
javascript基础知识分享之类与函数化
2016/02/13 Javascript
如何使用Vuex+Vue.js构建单页应用
2016/10/27 Javascript
ThinkPHP+jquery实现“加载更多”功能代码
2017/03/11 Javascript
详解微信JS-SDK选择图片遇到的坑
2018/08/15 Javascript
详解微信小程序开发用户授权登陆
2019/04/24 Javascript
JavaScript剩余操作符Rest Operator详解
2019/07/20 Javascript
关于layui表单中按钮自动提交的解决方法
2019/09/09 Javascript
javascript实现贪吃蛇小游戏
2020/07/28 Javascript
Python实现完整的事务操作示例
2017/06/20 Python
go和python变量赋值遇到的一个问题
2017/08/31 Python
使用python进行文本预处理和提取特征的实例
2018/06/05 Python
基于python实现聊天室程序
2018/07/27 Python
python数据爬下来保存的位置
2020/02/17 Python
pyecharts调整图例与各板块的位置间距实例
2020/05/16 Python
matplotlib更改窗口图标的方法示例
2021/02/03 Python
波兰在线运动商店:YesSport
2020/07/23 全球购物
世界上最大的皮肤科医生拥有和经营的美容网站:LovelySkin
2021/01/03 全球购物
应届生骨科医生求职信
2013/10/31 职场文书
财产公证书
2014/04/10 职场文书
志愿者活动总结范文
2014/04/26 职场文书
党员干部观看《周恩来四个昼夜》思想汇报
2014/09/10 职场文书
党的群众路线教育实践活动个人对照检查材料(医生)
2014/11/05 职场文书
2014年终工作总结范本
2014/12/15 职场文书
2015年档案室工作总结
2015/05/23 职场文书
2016暑期师德培训心得体会
2016/01/09 职场文书