_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 存储引擎概述

UNION 联合查询

UNION 联合查询

前面介绍了如何使用 WHERE 给查询加上条件约束,本小节介绍如何使用 UNION 联合查询。实际业务中,有时候需要把满足多种独立条件的结果集整合到一起,就可以使用 UNOIN 联合查询,本小节介绍 UNIONUNION ALL 的用法和区别。

1.UNION ALL联合查询

同样为了演示方便,先向 teacher 表插入多条测试数据:

INSERT INTO teacher(name,age,id_number,email)VALUES('姓名一',,'42011720200604077X',NULL),('姓名二',,'42011720200604099X','123@qq.com'),('姓名三',,'42011720200604020X',NULL),('姓名四',,'42011720200604022X','345@qq.com'),('姓名五',,'42011720200604033X',NULL),('姓名六',,'42011720200604077X',NULL),('姓名七',,'42011720200604099X','123@qq.com'),('姓名八',,'42011720200604020X',NULL),('姓名九',,'42011720200604022X','345@qq.com'),('姓名十',,'42011720200604033X',NULL),('姓名1',,'42011720200604077X',NULL),('姓名2',,'42011720200604099X','123@qq.com'),('姓名3',,'42011720200604020X',NULL),('姓名4',,'42011720200604022X','345@qq.com'),('姓名5',,'42011720200604033X',NULL),('姓名6',,'42011720200604077X',NULL),('姓名7',,'42011720200604099X','123@qq.com'),('姓名8',,'42011720200604020X',NULL),('姓名9',,'42011720200604022X','345@qq.com'),('姓名0',,'42011720200604033X',NULL)

执行结果如下图:

图片描述

现在使用 UNION ALL 把满足两种查询条件的结果集并到一起:

SELECT * FROM teacher WHERE age > UNION ALLSELECT * FROM teacher WHERE age > ;

执行结果如下图:

图片描述

Tips:如上图所示,UNION ALL 将两种查询结果并到一起,仔细观察可以发现结果集中有重复的数据,所以使用 UNION ALL 联合查询的结果集没有去掉重复的数据。

2.UNION 联合查询

现在使用 UNION 把上面两种结果集并到一起:

SELECT * FROM teacher WHERE age > UNIONSELECT * FROM teacher WHERE age > ;

执行结果如下图:

图片描述

Tips:如上图所示,UNION 将两种查询结果并到一起,可以看到结果集中已经去掉重复的数据,需要根据具体业务选择使用 UNION 还是 UNION ALL

3.小结

本小节介绍了如何使用 UNIONUNION ALL 联合查询需要结果集,需要注意的是要根据具体业务选择使用 UNION 还是 UNION ALL 其中 UNION 联合查询已经去除了重复的结果集 UNION ALL 联合查询没有去除重复结果集,但是 UNION ALL查询性能要比 UNION好一些。