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 update set 和 and的区别
May 08 MySQL
my.ini优化mysql数据库性能的十个参数(推荐)
May 26 MySQL
MYSQL(电话号码,身份证)数据脱敏的实现
May 28 MySQL
MySQL为id选择合适的数据类型
Jun 07 MySQL
MySQL 如何设计统计数据表
Jun 15 MySQL
mysql联合索引的使用规则
Jun 23 MySQL
详细聊聊MySQL中慢SQL优化的方向
Aug 30 MySQL
SQL实战演练之网上商城数据库商品类别数据操作
Oct 24 MySQL
mysql使用 not int 子查询隐含陷阱
Apr 12 MySQL
MySQL普通表如何转换成分区表
May 30 MySQL
MySQL详解进行JDBC编程与增删改查方法
Jun 16 MySQL
MySQL深分页问题解决思路
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导出MySQL数据到Excel文件(fputcsv)
2011/07/03 PHP
php创建基本身份认证站点的方法详解
2013/06/08 PHP
PHP限制HTML内容中图片必须是本站的方法
2015/06/16 PHP
thinkphp实现163、QQ邮箱收发邮件的方法
2015/12/18 PHP
PHP设计模式之PHP迭代器模式讲解
2019/03/22 PHP
extjs 学习笔记(三) 最基本的grid
2009/10/15 Javascript
Jquery实现侧边栏跟随滚动条固定(兼容IE6)
2014/04/02 Javascript
jQuery使用hide方法隐藏元素自身用法实例
2015/03/30 Javascript
JS简单实现String转Date的方法
2016/03/02 Javascript
jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】
2016/09/20 Javascript
让html元素随浏览器的大小自适应垂直居中的实现方法
2016/10/12 Javascript
Vue.js 2.0窥探之Virtual DOM到底是什么?
2017/02/10 Javascript
jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】
2017/09/12 jQuery
Vue 用Vant实现时间选择器的示例代码
2019/10/25 Javascript
如何在JavaScript中创建具有多个空格的字符串?
2020/02/23 Javascript
JavaScript 中判断变量是否为数字的示例代码
2020/10/22 Javascript
[47:31]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.12
2020/12/16 DOTA
Python Socket使用实例
2017/12/18 Python
python的Tqdm模块的使用
2018/01/10 Python
python使用pandas处理大数据节省内存技巧(推荐)
2019/05/05 Python
python多线程下信号处理程序示例
2019/05/31 Python
使用CSS3代码绘制可爱的Hello Kitty猫
2016/08/03 HTML / CSS
CSS3 分类菜单效果
2019/05/27 HTML / CSS
澳大利亚电子产品购物网站:Dick Smith
2017/02/02 全球购物
英国皇家造币厂:The Royal Mint
2018/10/05 全球购物
TobyDeals美国:在电子产品上获得最好的优惠和折扣
2019/08/11 全球购物
有趣、实用和鼓舞人心的产品:Inspire Uplift
2019/11/05 全球购物
编写类String的构造函数、析构函数和赋值函数
2012/05/29 面试题
20岁生日感言
2014/01/13 职场文书
风险评估实施方案
2014/03/09 职场文书
教师竞聘上岗演讲稿
2014/09/03 职场文书
2014年社区居委会主任重阳节讲话稿
2014/09/25 职场文书
2015新年寄语(一句话)
2014/12/08 职场文书
离婚协议书的范本
2015/01/27 职场文书
幼儿园庆元旦主持词
2015/07/06 职场文书
党章学习心得体会2016
2016/01/14 职场文书