这篇文章主要介绍mysql中如何获取不重复的数据,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
在MysqL中,可以在查询语句中添加distinct关键字来来过滤重复的记录,获取不重复的数据;语法“select distinct 字段名 from 数据表;”。
语法:
select distinct 字段名 from 数据表;
distinct的作用
在MysqL中,distinct关键字的主要作用就是对数据库表中一个或者多个字段重复的数据进行过滤,只返回其中的一条数据给用户,distinct只可以在select中使用
distinct的原理
distinct进行去重的主要原理是通过先对要进行去重的数据进行分组操作,然后从分组后的每组数据中去一条返回给客户端,在这个分组的过程可能会出现两种不同的情况:
-
distinct 依赖的字段全部包含索引:
该情况MysqL直接通过操作索引对满足条件的数据进行分组,然后从分组后的每组数据中去一条数据。
-
distinct 依赖的字段未全部包含索引:
该情况由于索引不能满足整个去重分组的过程,所以需要用到临时表,MysqL首先需要将满足条件的数据放到临时表中,然后在临时表中对该部分数据进行分组,然后从临时表中每个分组的数据中去一条数据,在临时表中进行分组的过程中不会对数据进行排序。
distinct的使用语法是这样的:
select distinct expression[,expression...] from tables [where conditions];
在使用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 http://www.chaoshizhushou.com 3 Two 20 OneZeroTwoFour 4 Four 30 加油 5 One 30 学习才是硬道理 6 Four 30 一日三省吾身
以上是MysqL中如何获取不重复的数据的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程之家行业资讯频道!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。