DISTINCT简介

DISTINCT 的作用是消除结果集中的重复行,语法如下:

SELECT DISTINCTcolumns
FROMtable_name
WHEREwhere_conditions;

需要注意的是,如果字段中有NULL值并且要对该列使用DISTINCT 子句,则MySQL仅保留一个NULL值,因为DISTINCT 子句将所有NULL值视为相同的值。

DISTINCT 多列

当DISTINCT作用在多个字段的时候,它只会将所有字段值都相同的记录“去重”掉。

DISTINCT语句与GROUP BY 语句

如果在不使用聚合函数的情况下在SELECT语句中使用GROUP BY子句,则GROUP BY子句的行为与DISTINCT 子句类似。

以下语句使用GROUP BY子句从customers表中选择客户的唯一状态。

customers表的字段:

+------------------------+
| customers              |
+------------------------+
| customerNumber         |
| customerName           |
| contactLastName        |
| contactFirstName       |
| phone                  |
| addressLine1           |
| addressLine2           |
| city                   |
| state                  |
| postalCode             |
| country                |
| salesRepEmployeeNumber |
| creditLimit            |
+------------------------+> SELECT state
FROMcustomers
GROUP BY state; +---------------+
| state         |
+---------------+
| NULL          |
| BC            |
| CA            |
| Co. Cork      |
| CT            |
| Isle of Wight |
...

使用以下DISTINCT子句将获得同样的结果:

> SELECT DISTINCTstate
FROMcustomers; +---------------+
| state         |
+---------------+
| NULL          |
| NV            |
| Victoria      |
| CA            |
| NY            |
| PA            |
| CT            |
| MA            |
...

如果将ORDER BY子句添加到使用DISTINCT子句的语句中 ,则结果集将进行排序,并且与使用GROUP BY子句的语句返回的结果集相同。

> SELECT DISTINCTstate
FROMcustomers
ORDER BY state; +---------------+
| state         |
+---------------+
| NULL          |
| BC            |
| CA            |
| Co. Cork      |
| CT            |
| Isle of Wight |
| MA            |
...

DISTINCT 和 LIMIT子句

如果将DISTINCT 子句与LIMIT子句一起使用,MySQL会在找到LIMIT子句中指定的唯一行数时立即停止搜索。

以下是在 customers表中查询选择前五个非null唯一州。

> SELECT DISTINCTstate
FROMcustomers
WHEREstate IS NOT NULL LIMIT 5; +----------+
| state    |
+----------+
| NV       |
| Victoria |
| CA       |
| NY       |
| PA       |
+----------+

去重计数

看到网上很多花里胡哨的写法,其实用DISTINCT就可以简单搞定

SELECT COUNT(DISTINCT 去重字段) FROM table

MySQL之DISTINCT的用法相关推荐

  1. php distinct 用法,distinct的用法

    1.  Distinct 位置 单独的distinct只能放在开头,否则报错,语法错误 例:SELECT Sid,DISTINCT(Sscore) score from t_student; [SQL ...

  2. mysql中去重的用法_mysql中去重 distinct 用法

    在使用MySQL时,有时需要查询出某个字段不重复的记录,这时可以使用mysql提供的distinct这个关键字来过滤重复的记录,但是实际中我们往往用distinct来返回不重复字段的条数(count( ...

  3. mysql中的distinct的用法

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

  4. 【MySQL】 DISTINCT关键字详解:用法、实际应用和与GROUP BY的区别

    目录 一.DISTINCT关键字 1.定义 2.使用场景 二.用法 1.基本用法 2.DISTINCT在多列上的使用 3.DISTINCT和GROUP BY的区别 三.实际应用场景 1.查询唯一的记录 ...

  5. mysql中change用法,mysql 中alter的用法以及一些步骤

    mysql 中alter的用法以及一些方法 在用到alter的时间,查到了这个文章,就copy下来了,详细进入下面链接: MySQL之alter语句用法总结 1:删除列 ALTER TABLE [表名 ...

  6. mysql中distinct关键字,MySQL关键字Distinct的详细介绍

    DDL Prepare SQL: ? Prepare Data: ? 查询数据如下图所示: 第一种情况,使用Distinct关键字,查询单列数据,如下图所示: 结果:对 name 字段进行去重处理,符 ...

  7. MySQL中EXISTS的用法

    比如在Northwind数据库中有一个查询为 SELECT c.CustomerId,CompanyName FROM Customers c WHERE EXISTS( SELECT OrderID ...

  8. mysql中distinct关键字_MySQL关键字Distinct的详细介绍

    MySQL关键字Distinct用法介绍 DDL Prepare SQL: create table test(id bigint not null primary key auto_incremen ...

  9. MySQL中group_concat函数用法总结

    MySQL中group_concat函数用法总结 一.group_concat函数的功能 将group by产生的同一个分组中的值连接起来,返回一个字符串结果.group_concat函数首先根据gr ...

最新文章

  1. weblogic 配置mysql数据源Cannot load driver class: com.mysql.jdbc.Driver的问题
  2. android studio3.0升级,升级androidStudio3.0的问题
  3. SpringMVC跳转页面默认类型和转发、重定向的使用
  4. 已经发车的票还能取出来吗_高铁票在车已经开了,但我没上车也没有取票的情况下,还能取出票吗?...
  5. NYOJ 2 括号配对问题
  6. 前端性能优化之 gzip+cache-control
  7. 九度oj题目1153:括号匹配问题
  8. 【多目标优化算法】基于分解的多目标进化算法 MOEA/D
  9. Flask学习笔记[更新中....]
  10. 【linux技术】记一次虚拟机vmware里 Centos7开机故障:sd 0:0:0:0: [sda] Assuming drive cache: write through
  11. 2023年全国最新工会考试精选真题及答案10
  12. Windows操作系统各版本的历史
  13. 读取海康威视摄像头实时显示视频流
  14. Android OTA在线升级一(架构分析)
  15. Linux ffmpeg命令的使用
  16. 给找工作的同学一点参考
  17. win10家庭版安装Hyper-v
  18. 分享30个分类目录网站,seo优化首选,免费提交收录
  19. Markdown Flow 画流程图详解
  20. HarmonyOS实战——TickTimer定时器组件基本使用

热门文章

  1. BLS 签名实现阈值签名的流程
  2. 小米前端面试、字节跳动前端面试、百分点前端面试-面试总结
  3. CMD命令行高级教程
  4. 君子善假于物:多语言开发介绍
  5. 质量小议4:质量管理不是发现问题
  6. 基于主成分分析 沪深300个股一致性IF股指交易策略
  7. sip协议中文(3)
  8. 不可思议有氧机器人_不思议迷宫蒸汽之都机器人彩蛋获得攻略
  9. 网页三剑客:HTML+CSS+JavaScript 之JavaScript
  10. 关于js中‘use strict‘使用的一些看法