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 06 MySQL
MySQL系列之十 MySQL事务隔离实现并发控制
Jul 02 MySQL
mysql配置SSL证书登录的实现
Sep 04 MySQL
Linux7.6二进制安装Mysql8.0.27详细操作步骤
Nov 27 MySQL
MySQL中一条update语句是如何执行的
Mar 16 MySQL
MySQL高级进阶sql语句总结大全
Mar 16 MySQL
Pycharm远程调试和MySQL数据库授权问题
Mar 18 MySQL
mysql 8.0.27 绿色解压版安装教程及配置方法
Apr 20 MySQL
MySQL的存储过程和相关函数
Apr 26 MySQL
MySQL脏读,幻读和不可重复读
May 11 MySQL
MySQL查询日期时间
May 15 MySQL
MYSQL事务的隔离级别与MVCC
May 25 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
PHP4实际应用经验篇(5)
2006/10/09 PHP
PHP新手上路(十)
2006/10/09 PHP
php feof用来识别文件末尾字符的方法
2010/08/01 PHP
thinkphp3.0输出重复两次的解决方法
2014/12/19 PHP
JSON字符串传到后台PHP处理问题的解决方法
2016/06/05 PHP
php使用curl下载指定大小的文件实例代码
2017/09/30 PHP
Nigma vs Alliance BO5 第四场2.14
2021/03/10 DOTA
List the Codec Files on a Computer
2007/06/11 Javascript
javascript innerHTML使用分析
2010/12/03 Javascript
了解一点js的Eval函数
2012/07/26 Javascript
用javascript模仿ie的自动完成类似自动完成功的表单
2012/12/12 Javascript
图片延迟加载的实现代码(模仿懒惰)
2013/03/29 Javascript
JavaScript使用pop方法移除数组最后一个元素用法实例
2015/04/06 Javascript
JavaScript实现简单图片翻转的方法
2015/04/17 Javascript
JavaScript实现的SHA-1加密算法完整实例
2016/02/02 Javascript
总结JavaScript设计模式编程中的享元模式使用
2016/05/21 Javascript
JavaScript程序中的流程控制语句用法总结
2016/05/23 Javascript
AngularJS基础 ng-options 指令详解
2016/08/02 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
2017/06/08 Javascript
vue.js移动端tab组件的封装实践实例
2017/06/30 Javascript
nodejs前端模板引擎swig入门详解
2018/05/15 NodeJs
在 vue-cli v3.0 中使用 SCSS/SASS的方法
2018/06/14 Javascript
Vue中div contenteditable 的光标定位方法
2018/08/25 Javascript
简单了解微信小程序的目录结构
2019/07/01 Javascript
Python异常学习笔记
2015/02/03 Python
python 设置文件编码格式的实现方法
2017/12/21 Python
python中的不可变数据类型与可变数据类型详解
2018/09/16 Python
在python 不同时区之间的差值与转换方法
2019/01/14 Python
python与字符编码问题
2019/05/24 Python
Python绘制词云图之可视化神器pyecharts的方法
2021/02/23 Python
STAY JAPAN台湾:预订日本民宿
2018/07/22 全球购物
澳洲CFL商城:CHEMIST FOR LESS(中文)
2021/02/28 全球购物
工作检讨书500字
2014/10/19 职场文书
2014年学校安全工作总结
2014/11/13 职场文书
公务员个人考察材料
2014/12/23 职场文书
Python实现信息轰炸工具(再也不怕说不过别人了)
2021/06/11 Python