mysql怎么获取不重复的数据?

mysql怎么获取不重复的数据?,第1张

概述mysql怎么获取重复数据

在MysqL中,可以在查询语句中添加distinct关键字来来过滤重复的记录,获取不重复的数据;语法“select distinct 字段名 from 数据表;”。

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;

查询结果

age102030

对多个字段进行去重sql:

select distinct name,age from user;

查询结果

nameageOne10Zero20Two20Four30One30

对多个字段进行去重并求count的sql:

select count(distinct name,age) as total from user;

查询结果

total5

对select * 进行去重

select distinct * from user;

由于 * 代表所有字段,所以该sql和 select distinct ID,name,age,sign from user 语义相同

查询结果:

ID		name	age		sign1		One		10		梦想要有的,万一实现了呢2		Zero	20		http://www.chaoshizhushou.com3		Two		20		OneZeroTwoFour4		Four	30		加油5		One		30		学习才是硬道理6		Four	30		一日三省吾身

推荐教程:mysql视频教程 总结

以上是内存溢出为你收集整理的mysql怎么获取不重复的数据?全部内容,希望文章能够帮你解决mysql怎么获取不重复的数据?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1151032.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存