_mysql.c(42) : fatal error C1083: Cannot open include file: 'config-win.h':no such file or directory数据库笔试题及答案Mysql Where 条件使用列别名Every derived table must have its own aliasMySQL 解决 emoji表情 的方法,使用utf8mb4 字符集(4字节 UTF-8 Unicode 编码)utf8mb4 字符集(4字节 UTF-8 Unicode 编码)Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE)right syntax to use near 'USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8' at line 6mysql中delete的表别名使用方法Windows7下pip安装包报错:Microsoft Visual C++ 9.0 is required Unable to find vcvarsall.batMySQL与PostgreSQL比较 哪个数据库更好java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\xB3' for column 'Content' at row 1service mysqld start MySQL Daemon failed to start.Python Version 2.7 required which was not found in the registry解决python连接mysql,UTF-8乱码问题如何从官网下载MySQL最新版本的安装包?MySQL 如何实现行转列分级输出?Bluemix云端数据库服务使用示例———PHP投票程序Bluemix云端数据库服务ClearDB MySQL使用示例———Python开发投票程序MySQL 数据库简介Windows 安装最新版 MySQLLinux 安装最新版MySQL与 MySQL 建立连接MySQL 创建子账号MySQL 多实例配置MySQL 创建数据库MySQL 删除数据库MySQL 选中数据库MySQL 的数据类型1MySQL 的数据类型2MySQL 设计数据表MySQL 数据表设计规范ALTER 命令修改表MySQL 删除数据表INSERT 插入数据DELETE 删除数据SELECT 查询数据UPDATE 更新数据LIKE 模糊查询WHERE 条件查询UNION 联合查询ORDER BY 排序JOIN 表连接DISTINCT 去重GROUP BY分组聚合函数 AVG、COUNT、SUM聚合函数 MIN、MAX条件判断函数MySQL 的系统函数MySQL 中使用正则表达式MySQL 存储引擎概述

DISTINCT 去重

DISTINCT 去重

前面小节介绍了如何使用 GROUP BY 对查询数据分组,并且 GROUP BY 能起到有效去重作用,本小节介绍如何使用 DISTINCT 去重。

1. 单字段去重

以表 student_course 和 表 student 链接为例:

SELECT * FROM student_course  INNER JOIN student  ON .student_id=.id;

查询结果如下图:

图片描述

上图查询结果中,若只需要学生信息,则需要对结果进行去重:

SELECT DISTINCT student_id 
FROM student_course  
INNER JOIN student  
ON .student_id=.id;

执行结果如下图 :

图片描述

2. 多字段去重

以表 student_course、course、course、teacher 链接为例:

SELECT * FROM student_course  
INNER JOIN course  
ON .course_id=.id 
INNER JOIN teacher  
ON .teacher_id=.id;

查询结果如下图:

图片描述

如上图,若需要得到所有教师的所有课程信息,则需要多个字段对结果去重:

SELECT DISTINCT  .course_id,.course_name,.teacher_id,.nameFROM student_course  
INNER JOIN course  
ON .course_id=.id 
INNER JOIN teacher  
ON .teacher_id=.id;

去重后查询结果如下图 :

图片描述

Tips:多字段去重意思就是只有所有指定的列信息都相同,才会被认定为重复的信息。

3. 小结

本小节介绍了如何使用 DISTINCT 去重,之前介绍的 GROUP BY 也能起到去重的作用,使用的频率相对较高,它的目的是用来分组进行聚合统计的,例如需要对分组的数据统计:

 SELECT teacher_id,count(*) FROM course GROUP BY teacher_id;

执行结果如下图:

图片描述

Tips:如上图所示,count(*) 表示使用聚合函数对分组数据统计,这里可以理解为分组重复的总数,例如 teacher_id=1 的总共有 5 条。