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


本文摘自PHP中文网,作者青灯夜游,侵删。

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

mysql获取不重复的数据的方法:

在查询语句中添加distinct关键字来来过滤重复的记录

语法:

1

select distinct 字段名 from 数据表;

distinct的作用

在mysql中,distinct关键字的主要作用就是对数据库表中一个或者多个字段重复的数据进行过滤,只返回其中的一条数据给用户,distinct只可以在select中使用

distinct的原理

distinct进行去重的主要原理是通过先对要进行去重的数据进行分组操作,然后从分组后的每组数据中去一条返回给客户端,在这个分组的过程可能会出现两种不同的情况:

  • distinct 依赖的字段全部包含索引:

    该情况mysql直接通过操作索引对满足条件的数据进行分组,然后从分组后的每组数据中去一条数据。

  • distinct 依赖的字段未全部包含索引:

    该情况由于索引不能满足整个去重分组的过程,所以需要用到临时表,mysql首先需要将满足条件的数据放到临时表中,然后在临时表中对该部分数据进行分组,然后从临时表中每个分组的数据中去一条数据,在临时表中进行分组的过程中不会对数据进行排序。

distinct的用法

distinct的使用语法是这样的:

1

select distinct expression[,expression...] from tables [where conditions];

在使用distinct的过程中主要注意一下几点:

  • 在对字段进行去重的时候,要保证distinct在所有字段的最前面

  • 如果distinct关键字后面有多个字段时,则会对多个字段进行组合去重,只有多个字段组合起来的值是相等的才会被去重

下面我们通过在开发过程中经常遇到的一些关于distinct的实例来加深大家对该关键字用法的理解:

数据库表结构和数据如下图所示:

1.png

阅读剩余部分

相关阅读 >>

navicat连接mysql报错1130怎么办

mysql 如何进行数据查询

3 个简单优化mysql的小方法

上篇 mysql 语句加锁分析

mysql 怎样统计分组数

mysql跨行事务模型(图文详解)

mysql分析sql的耗时问题

mysql explain 详细介绍

动力节点mysql基础视频资料分享

mysql中limit的一些高级用法

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...