MySQL union all用法
在MySQL中,UNION ALL
是一种用于合并多个SELECT
语句结果集的操作符。它允许将多个查询的结果集合并为一个结果集,并且保留所有的重复行。在本文中,我们将详细讨论UNION ALL
的使用方法。
1. UNION ALL
的基本语法
UNION ALL
的基本语法如下所示:
SELECT column1, column2, ...
FROM table1
WHERE condition1
UNION ALL
SELECT column1, column2, ...
FROM table2
WHERE condition2
UNION ALL
SELECT column1, column2, ...
FROM table3
WHERE condition3
...
每个SELECT
语句都必须具有相同的列数,并且相应的列的数据类型必须兼容。列的顺序可以不同,但是结果集的列名将基于第一个SELECT
语句的列名。
2. 使用示例
接下来,我们将通过一些具体的示例来演示UNION ALL
的用法。
示例1:合并两个表的结果集
考虑以下两个表employees1
和employees2
的结构:
CREATE TABLE employees1 (
id INT PRIMARY KEY,
name VARCHAR(100),
age INT
);
CREATE TABLE employees2 (
id INT PRIMARY KEY,
name VARCHAR(100),
age INT
);
假设employees1
表中包含以下数据:
id | name | age
---|--------|----
1 | Alice | 25
2 | Bob | 30
3 | Charlie| 35
employees2
表中包含以下数据:
id | name | age
---|--------|----
4 | David | 40
5 | Eve | 45
我们可以使用UNION ALL
操作符来合并这两个表的结果集:
SELECT id, name, age
FROM employees1
UNION ALL
SELECT id, name, age
FROM employees2;
运行以上查询将得到合并后的结果集:
id | name | age
---|--------|----
1 | Alice | 25
2 | Bob | 30
3 | Charlie| 35
4 | David | 40
5 | Eve | 45
请注意,UNION ALL
操作符不会去除重复的行。
示例2:合并多个查询的结果集
除了合并表的结果集,UNION ALL
还可以用于合并多个查询的结果集。
考虑以下两个查询:
SELECT id, name, age
FROM employees1
WHERE age < 30;
SELECT id, name, age
FROM employees2
WHERE age > 40;
我们可以使用UNION ALL
操作符将这两个查询的结果集合并为一个结果集:
SELECT id, name, age
FROM employees1
WHERE age < 30
UNION ALL
SELECT id, name, age
FROM employees2
WHERE age > 40;
运行以上查询将得到合并后的结果集:
id | name | age
---|--------|----
1 | Alice | 25
2 | Bob | 30
5 | Eve | 45
示例3:使用UNION ALL
进行排序
我们可以在UNION ALL
操作符之后使用ORDER BY
子句对合并后的结果集进行排序。
考虑以下两个查询:
SELECT id, name, age
FROM employees1
WHERE age < 30;
SELECT id, name, age
FROM employees2
WHERE age > 40;
我们可以通过添加ORDER BY
子句对结果集按照age
字段进行排序:
SELECT id, name, age
FROM employees1
WHERE age < 30
UNION ALL
SELECT id, name, age
FROM employees2
WHERE age > 40
ORDER BY age;
运行以上查询将得到按照age
字段排序的结果集:
id | name | age
---|--------|----
1 | Alice | 25
5 | Eve | 45
2 | Bob | 30
示例4:使用UNION ALL
合并多个表
除了合并查询的结果集,我们还可以使用UNION ALL
操作符来合并多个表的数据。
考虑以下三个表table1
,table2
和table3
的结构:
CREATE TABLE table1 (
id INT PRIMARY KEY,
name VARCHAR(100),
age INT
);
CREATE TABLE table2 (
id INT PRIMARY KEY,
name VARCHAR(100),
age INT
);
CREATE TABLE table3 (
id INT PRIMARY KEY,
name VARCHAR(100),
age INT
);
我们可以使用UNION ALL
操作符来合并这三个表的数据:
SELECT id, name, age
FROM table1
UNION ALL
SELECT id, name, age
FROM table2
UNION ALL
SELECT id, name, age
FROM table3;
此查询将返回合并后的结果集,包含了table1
、table2
和table3
表的所有数据。
3. 总结
UNION ALL
是MySQL中用于合并多个SELECT
语句结果集的操作符。它允许我们将多个查询的结果集合并为一个结果集,并且保留所有的重复行。在本文中,我们讨论了UNION ALL
的基本语法和使用示例。