MySQL UNION 操作符
MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合,并去除重复的行
UNION 操作符必须由两个或多个 SELECT 语句组成,每个 SELECT 语句的列数和对应位置的数据类型必须相同
MySQL UNION 操作符语法格式:
SELECT column1, column2, ...
FROM table1
WHERE condition1
UNION
SELECT column1, column2, ...
FROM table2
WHERE condition2
[ORDER BY column1, column2, ...];
参数说明:
column1
,column2
, ... 是你要选择的列的名称,如果使用*
表示选择所有列table1
,table2
, ... 是你要从中查询数据的表的名称condition1
,condition2
, ... 是每个SELECT
语句的过滤条件,是可选的ORDER BY
子句是一个可选的子句,用于指定合并后的结果集的排序顺序
以下示例在之前创建的RoboMaster数据库下进行操作
当前数据库数据
mysql> SELECT * FROM Username;
+------+------------+-----------+
| id | Username | Password |
+------+------------+-----------+
| 1 | steins_xin | 123456 |
| 2 | xin | 123456789 |
+------+------------+-----------+
2 rows in set (0.01 sec)
示例:
- 基本的 UNION 操作:
SELECT id FROM username
UNION
SELECT id FROM username
ORDER BY id;
结果:
mysql> SELECT id FROM username
-> UNION
-> SELECT id FROM username
-> ORDER BY id;
+------+
| id |
+------+
| 1 |
| 2 |
+------+
2 rows in set (0.00 sec)
- 使用过滤条件的 UNION:
SELECT id FROM username WHERE username = 'xin'
UNION
SELECT id FROM username WHERE username = 'steins_xin'
ORDER BY id;
结果:
mysql> SELECT id FROM username WHERE username = 'xin'
-> UNION
-> SELECT id FROM username WHERE username = 'steins_xin'
-> ORDER BY id;
+------+
| id |
+------+
| 1 |
| 2 |
+------+
2 rows in set (0.00 sec)
- 使用 UNION ALL 不去除重复行:
SELECT id FROM username
UNION ALL
SELECT id FROM username
ORDER BY id;
结果:
mysql> SELECT id FROM username
-> UNION ALL
-> SELECT id FROM username
-> ORDER BY id;
+------+
| id |
+------+
| 1 |
| 1 |
| 2 |
| 2 |
+------+
4 rows in set (0.00 sec)
UNION 操作符在合并结果集时会去除重复行,而 UNION ALL 不会去除重复行,因此 UNION ALL 的性能可能更好,但如果你确实希望去除重复行,可以使用 UNION