联合查询是可合并多个相似的选择查询的结果集。等同于将一个表追加到另一个表,从而实现将两个表的查询组合到一起
一、语法格式
select 语句1 union【union选项】 select 语句2
二、说明
union选项:可取两个值all和distinct
all--保留结果集中的所有行
distinct--去掉结果集中的重复行,默认
每个 SELECT 语句的列数和对应位置的数据类型必须相同
三、使用
【例】将Sell表中的用户“C0138”的订单和图书编号为' TP.2525'的订单合并。
1.实现:查询Sell表中的用户“C0138”的订单的语句
SELECT 订单号,用户号,图书编号,订购册数 FROM Sell
WHERE 用户号='C0138' ;
结果:
+----------+----------+-------------+-------------+
| 订单号 | 用户号 | 图书编号 | 订购册数 |
+----------+----------+-------------+-------------+
| 4 | C0138 | Ts.3035 | 10 |
| 5 | C0138 | TP.2525 | 133 |
| 7 | C0138 | TP.2463 | 43 |
| 8 | C0138 | Ts.3035 | 5 |
+---------+-----------+--------------+------------+
2.实现:查询图书编号为' TP.2525'的订单的语句
SELECT 订单号,用户号,图书编号,订购册数 FROM Sell
WHERE 图书编号='TP.2525' ;
结果:
+---------+----------+------------+-------------+
| 订单号 | 用户号 | 图书编号 | 订购册数 |
+---------+----------+-------------+-------------+
| 1 | C0132 | TP.2525 | 13 |
| 3 | D1963 | TP.2525 | 6 |
| 5 | C0138 | TP.2525 | 133 |
+----------+---------+-------------+--------------+
3.实现:
将上述两个查询结果合并(去除重复行)
SELECT 订单号,用户号,图书编号,订购册数 FROM Sell
WHERE 用户号='C0138'
union
SELECT 订单号,用户号,图书编号,订购册数 FROM Sell
WHERE 图书编号='TP.2525' ;
结果:
+---------+----------+------------+-------------+
| 订单号 | 用户号 | 图书编号 | 订购册数 |
+---------+----------+------------+-------------+
| 4 | C0138 | Ts.3035 | 10 |
| 5 | C0138 | TP.2525 | 133 |
| 7 | C0138 | TP.2463 | 43 |
| 8 | C0138 | Ts.3035 | 5 |
| 1 | C0132 | TP.2525 | 13 |
| 3 | D1963 | TP.2525 | 6 |
+---------+-----------+------------+-----------+
将上述两个查询结果合并(保留重复行)
SELECT 订单号,用户号,图书编号,订购册数 FROM Sell
WHERE 用户号='C0138'
union all
SELECT 订单号,用户号,图书编号,订购册数 FROM Sell
WHERE 图书编号='TP.2525' ;
结果:
+---------+----------+-------------+------------+
| 订单号 | 用户号 | 图书编号 | 订购册数 |
+--------+-----------+-------------+-------------+
| 4 | C0138 | Ts.3035 | 10 |
| 5 | C0138 | TP.2525 | 133 |
| 7 | C0138 | TP.2463 | 43 |
| 8 | C0138 | Ts.3035 | 5 |
| 1 | C0132 | TP.2525 | 13 |
| 3 | D1963 | TP.2525 | 6 |
| 5 | C0138 | TP.2525 | 133 |
+---------+----------+------------+--------------+