【数据库】组合查询 UNION

组合查询


概述

  • 组合查询允许将两个或多个查询的结果合并成一个单一的结果集。
  • 组合查询分类包括 UNIONUNION ALLINTERSECTEXCEPT 来合并查询结果。下述不同的组合查询;

下述示例中将使用的表:IllinoisIndiana

sql 复制代码
-- 表 Illinois
cust_id		last_name	 phone 		address
-------		---------	 --------	--------
00100		Kevin		 123456		No.123 Rd.Green
00123		John		 122234		No.221 Rd.Brown
00213		Kevin		 223122		No.111 Rd.Green

-- 表 Indiana
cust_id		last_name	 phone 		address
-------		---------	 --------	--------
00100		Kevin		 123456		No.123 Rd.Green
12002		Green		 123322		No.091 Rd.Yellow

组合查询

UNION

  • UNION 合并两个或多个查询的结果,并且去除重复的行,所以结果集中的行是唯一的,不会包含重复的数据。

e . g . e.g. e.g. 获取两个表中 Illinois Indiana 中所有人员(不重复);

sql 复制代码
SELECT *
FROM Illinois
UNION
SELECT *
FROM Indiana

结果为:

sql 复制代码
-- 结果表
cust_id		last_name	 phone 		address
-------		---------	 --------	--------
00100		Kevin		 123456		No.123 Rd.Green
00123		John		 122234		No.221 Rd.Brown
00213		Kevin		 223122		No.111 Rd.Green
12002		Green		 123322		No.091 Rd.Yellow

UNION ALL

  • UNION ALL 合并两个或多个查询的结果,但不去除重复的行。所以结果集中可能包含重复的数据;
  • UNION 相比,UNION ALL 不执行去重操作,因此性能通常更好;

e . g . e.g. e.g. 获取两个表中 Illinois Indiana 中所有人员(可重复);

sql 复制代码
SELECT *
FROM Illinois
UNION ALL
SELECT *
FROM Indiana;

结果为:

sql 复制代码
-- 结果表
cust_id		last_name	 phone 		address
-------		---------	 --------	--------
00100		Kevin		 123456		No.123 Rd.Green
00123		John		 122234		No.221 Rd.Brown
00213		Kevin		 223122		No.111 Rd.Green
00100		Kevin		 123456		No.123 Rd.Green
12002		Green		 123322		No.091 Rd.Yellow

结果表中第一项与第四项重复。


INTERSECT

  • INTERSECT 用于找到两个查询结果之间的交集。结果集将包含同时存在于两个查询结果中的行。

e . g . e.g. e.g. 获取两个表中 Illinois Indiana 中都包含的行;

sql 复制代码
SELECT *
FROM Illinois
INTERSECT
SELECT *
FROM Indiana;

结果为:

sql 复制代码
-- 结果表
cust_id		last_name	 phone 		address
-------		---------	 --------	--------
00100		Kevin		 123456		No.123 Rd.Green

EXCEPT

  • EXCEPT 结果集包含存在于第一个查询结果中但不存在于第二个查询结果中的行。

e . g . e.g. e.g. 获取表 Illinois 中不包含 Indiana 表中值的行;

sql 复制代码
SELECT *
FROM Illinois
EXCEPT
SELECT *
FROM Indiana;

结果为:

sql 复制代码
-- 结果表
cust_id		last_name	 phone 		address
-------		---------	 --------	--------
00123		John		 122234		No.221 Rd.Brown
00213		Kevin		 223122		No.111 Rd.Green
  • 查询将返回在 Illinois 表中存在但在 Indiana 表中不存在的顾客信息。

--

以上

相关推荐
恒悦sunsite15 分钟前
Ubuntu之apt安装ClickHouse数据库
数据库·clickhouse·ubuntu·列式存储·8123
奥尔特星云大使1 小时前
MySQL 慢查询日志slow query log
android·数据库·mysql·adb·慢日志·slow query log
来自宇宙的曹先生1 小时前
MySQL 存储引擎 API
数据库·mysql
间彧1 小时前
MySQL Performance Schema详解与实战应用
数据库
间彧1 小时前
MySQL Exporter采集的关键指标有哪些,如何解读这些指标?
数据库
weixin_446260851 小时前
Django - 让开发变得简单高效的Web框架
前端·数据库·django
mpHH2 小时前
babelfish for postgresql 分析--todo
数据库·postgresql
zizisuo2 小时前
解决在使用Lombok时maven install 找不到符号的问题
java·数据库·maven
程序边界3 小时前
国产之光!金仓数据库KingbaseES Oracle兼容性深度体验大赏
数据库·oracle
A阳俊yi3 小时前
Spring——声明式事务
java·数据库·spring