mysql怎么获取不重复的数据?
MySQL获取不重复的数据的方法:
在查询语句中添加distinct关键字来来过滤重复的记录
语法:
select distinct 字段名 from 数据表;
distinct的作用
在mysql中,distinct关键字的主要作用就是对数据库表中一个或者多个字段重复的数据进行过滤,只返回其中的一条数据给用户,distinct只可以在select中使用
distinct的原理
distinct进行去重的主要原理是通过先对要进行去重的数据进行分组操作,然后从分组后的每组数据中去一条返回给客户端,在这个分组的过程可能会出现两种不同的情况:
-
distinct 依赖的字段全部包含索引:
该情况mysql直接通过操作索引对满足条件的数据进行分组,然后从分组后的每组数据中去一条数据。
-
distinct 依赖的字段未全部包含索引:
该情况由于索引不能满足整个去重分组的过程,所以需要用到临时表,mysql首先需要将满足条件的数据放到临时表中,然后在临时表中对该部分数据进行分组,然后从临时表中每个分组的数据中去一条数据,在临时表中进行分组的过程中不会对数据进行排序。
distinct的用法
distinct的使用语法是这样的:
select distinct expression[,expression...] from tables [where conditions];
在使用distinct的过程中主要注意一下几点:
-
在对字段进行去重的时候,要保证distinct在所有字段的最前面
-
如果distinct关键字后面有多个字段时,则会对多个字段进行组合去重,只有多个字段组合起来的值是相等的才会被去重
下面我们通过在开发过程中经常遇到的一些关于distinct的实例来加深大家对该关键字用法的理解:
数据库表结构和数据如下图所示:

对单个字段进行去重sql:
select distinct age from user;
查询结果
age 10 20 30
对多个字段进行去重sql:
select distinct name,age from user;
查询结果
nameage One10 Zero20 Two20 Four30 One30
对多个字段进行去重并求count的sql:
select count(distinct name,age) as total from user;
查询结果
total 5
对select * 进行去重
select distinct * from user;
由于 * 代表所有字段,所以该sql和 select distinct id,name,age,sign from user 语义相同
查询结果:
id name age sign 1 One 10 梦想要有的,万一实现了呢 2 Zero 20 https://freexyz.cn/ 3 Two 20 OneZeroTwoFour 4 Four 30 加油 5 One 30 学习才是硬道理 6 Four 30 一日三省吾身
您可能感兴趣的文章
- 12-31hiredis从安装到项目实战操作
- 12-31phpmyadmin登录时怎么指定服务器ip和端口
- 12-31MySQL线上死锁分析实战
- 12-31MySQL 触发器的使用和理解
- 12-31MySQL 字段默认值该如何设置
- 12-31Redis主从同步配置的方法步骤(图文)
- 12-31MySQL 字符串拆分操作(含分隔符的字符串截取)
- 12-31redis 交集、并集、差集的具体使用
- 12-31MySQL精讲之二:DML数据操作语句
- 12-31PostgreSQL判断字符串是否包含目标字符串的多种方法


阅读排行
推荐教程
- 12-23PL/SQL登录Oracle数据库报错ORA-12154:TNS:无法解析指定的连接标识符
- 12-23使用imp和exp命令对Oracle数据库进行导入导出操作详解
- 12-11mysql代码执行结构实例分析【顺序、分支、循环结构】
- 12-08添加mysql的用户名和密码是什么语句?
- 12-05mysql的事务,隔离级别和锁用法实例分析
- 12-23详解Oracle游标的简易用法
- 12-20PhpMyAdmin出现错误数据无法导出怎么办?
- 12-19Redis中实现查找某个值的范围
- 12-15浅析mysql迁移到clickhouse的5种方法
- 12-15CentOS7 64位下MySQL5.7安装与配置教程




