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的基本语法和使用示例。
极客笔记