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 分组查询的优化方法
May 12 MySQL
解决Navicat for Mysql连接报错1251的问题(连接失败)
May 27 MySQL
为什么MySQL分页用limit会越来越慢
Jul 25 MySQL
mysql中整数数据类型tinyint详解
Dec 06 MySQL
一文弄懂MySQL中redo log与binlog的区别
Feb 15 MySQL
一文了解MySQL二级索引的查询过程
Feb 24 MySQL
Mysql 8.x 创建用户以及授予权限的操作记录
Apr 18 MySQL
MYSQL常用函数介绍
May 05 MySQL
Mysql中常用的join连接方式
May 11 MySQL
MySQL自定义函数及触发器
Aug 05 MySQL
DQL数据查询语句使用示例
Dec 24 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 radio 单选框获取与保持值的实现代码
2010/05/15 PHP
php + nginx项目中的权限详解
2017/05/23 PHP
ExtJs使用IFrame的实现代码
2010/03/24 Javascript
jquery随机展示头像代码
2011/12/21 Javascript
js 获取(接收)地址栏参数值的方法
2013/04/01 Javascript
使用jQuery实现返回顶部
2015/01/26 Javascript
jQuery实现美观的多级动画效果菜单代码
2015/09/06 Javascript
js倒计时抢购实例
2015/12/20 Javascript
AngularJS实现网站换肤实例
2021/02/19 Javascript
JSON中key动态设置及JSON.parse和JSON.stringify()的区别
2016/12/29 Javascript
javascript函数的四种调用模式
2017/01/08 Javascript
详解利用 Express 托管静态文件的方法
2017/09/18 Javascript
五步轻松实现JavaScript HTML时钟效果
2020/03/25 Javascript
使用vue-router在Vue页面之间传递数据的方法
2019/07/15 Javascript
微信小程序文字显示换行问题
2019/07/28 Javascript
微信小程序实现左滑删除效果
2020/11/18 Javascript
[02:14]DOTA2英雄基础教程 修补匠
2013/12/23 DOTA
Python对象体系深入分析
2014/10/28 Python
详解在Python和IPython中使用Docker
2015/04/28 Python
Python使用flask框架操作sqlite3的两种方式
2018/01/31 Python
Python RabbitMQ消息队列实现rpc
2018/05/30 Python
500行Python代码打造刷脸考勤系统
2019/06/03 Python
python selenium 执行完毕关闭chromedriver进程示例
2019/11/15 Python
详解pycharm连接不上mysql数据库的解决办法
2020/01/10 Python
python爬虫爬取网页数据并解析数据
2020/09/18 Python
加拿大女鞋品牌:ALDO
2016/11/13 全球购物
Marmot土拨鼠官网:美国专业户外运动品牌
2018/01/11 全球购物
Lookfantastic西班牙官网:英国知名美妆购物网站
2018/06/13 全球购物
市场策划求职信
2014/08/07 职场文书
工作疏忽检讨书500字
2014/10/26 职场文书
群众路线教育实践活动学习心得体会
2014/10/30 职场文书
整脏治乱工作简报
2015/07/21 职场文书
只需要100行Python代码就可以实现的贪吃蛇小游戏
2021/05/27 Python
2021年最新用于图像处理的Python库总结
2021/06/15 Python
基于python定位棋子位置及识别棋子颜色
2021/07/26 Python
在Spring-Boot中如何使用@Value注解注入集合类
2021/08/02 Java/Android