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 使用SQL语句修改表名的实现
Apr 07 MySQL
MySQL 隔离数据列和前缀索引的使用总结
May 14 MySQL
详解MySQL中的主键与事务
May 27 MySQL
MySQL 常见存储引擎的优劣
Jun 02 MySQL
MySQL 聚合函数排序
Jul 16 MySQL
SQL实现LeetCode(177.第N高薪水)
Aug 04 MySQL
MySQL into_Mysql中replace与replace into用法案例详解
Sep 14 MySQL
Mysql排序的特性详情
Nov 01 MySQL
SQL 聚合、分组和排序
Nov 11 MySQL
mysql 生成连续日期及变量赋值
Mar 20 MySQL
Mysql查询时间区间日期列表,不会由于数据表数据影响
Apr 19 MySQL
MySQL分布式恢复进阶
Jul 23 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 反射机制实现动态代理的代码
2008/10/22 PHP
destoon整合ucenter后注册页面不跳转的解决方法
2014/06/21 PHP
php使用curl获取https请求的方法
2015/02/11 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
2016/09/23 PHP
VSCode+PHPstudy配置PHP开发环境的步骤详解
2020/08/20 PHP
javascript学习笔记(四)function函数部分
2014/09/30 Javascript
纯javascript实现分页(两种方法)
2015/08/26 Javascript
基于d3.js实现实时刷新的折线图
2016/08/03 Javascript
AngularJS实现树形结构(ztree)菜单示例代码
2016/09/18 Javascript
ES6新特性之模块Module用法详解
2017/04/01 Javascript
详解使用create-react-app添加css modules、sasss和antd
2018/07/31 Javascript
vue自定义表单生成器form-create使用详解
2019/07/19 Javascript
uni app仿微信顶部导航条功能
2019/09/17 Javascript
vue 获取及修改store.js里的公共变量实例
2019/11/06 Javascript
Vue组件通信中非父子组件传值知识点总结
2019/12/05 Javascript
微信小程序实现比较功能的方法汇总(五种方法)
2020/03/07 Javascript
js实现双人五子棋小游戏
2020/05/28 Javascript
python with statement 进行文件操作指南
2014/08/22 Python
pygame学习笔记(3):运动速率、时间、事件、文字
2015/04/15 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
2016/03/02 Python
Python实现ssh批量登录并执行命令
2016/10/25 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
2017/03/12 Python
Python根据指定日期计算后n天,前n天是哪一天的方法
2018/05/29 Python
Python实现数据可视化看如何监控你的爬虫状态【推荐】
2018/08/10 Python
python并发编程多进程 互斥锁原理解析
2019/08/20 Python
pytorch获取模型某一层参数名及参数值方式
2019/12/30 Python
python批量处理txt文件的实例代码
2020/01/13 Python
Python3 集合set入门基础
2020/02/10 Python
Stefania Mode英国:奢华设计师和时尚服装
2017/10/23 全球购物
英国优质鞋类专家:Robinson’s Shoes
2017/12/08 全球购物
酒店节能降耗方案
2014/05/08 职场文书
学生会竞选演讲稿怎么写
2014/08/26 职场文书
试用期解除劳动合同通知书
2015/04/16 职场文书
教师师德承诺书2016
2016/03/25 职场文书
创业计划书之个人工作室
2019/08/22 职场文书
2019年消防宣传标语集锦
2019/11/21 职场文书