组合查询
- 概述
- 组合查询
- UNION
- UNION ALL
- INTERSECT
- EXCEPT
概述
- 组合查询允许将两个或多个查询的结果合并成一个单一的结果集。
- 组合查询分类包括 UNION、UNION ALL、INTERSECT 和 EXCEPT 来合并查询结果。下述不同的组合查询;
下述示例中将使用的表:Illinois 与 Indiana;
-- 表 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 中所有人员(不重复);
SELECT *
FROM Illinois
UNION
SELECT *
FROM Indiana
结果为:
-- 结果表
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 中所有人员(可重复);
SELECT *
FROM Illinois
UNION ALL
SELECT *
FROM Indiana;
结果为:
-- 结果表
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 中都包含的行;
SELECT *
FROM Illinois
INTERSECT
SELECT *
FROM Indiana;
结果为:
-- 结果表
cust_id last_name phone address
------- --------- -------- --------
00100 Kevin 123456 No.123 Rd.Green
EXCEPT
- EXCEPT 结果集包含存在于第一个查询结果中但不存在于第二个查询结果中的行。
e . g . e.g. e.g. 获取表 Illinois 中不包含 Indiana 表中值的行;
SELECT *
FROM Illinois
EXCEPT
SELECT *
FROM Indiana;
结果为:
-- 结果表
cust_id last_name phone address
------- --------- -------- --------
00123 John 122234 No.221 Rd.Brown
00213 Kevin 223122 No.111 Rd.Green
- 查询将返回在 Illinois 表中存在但在 Indiana 表中不存在的顾客信息。
–
以上