MySQL union all用法

MySQL union all用法

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:合并两个表的结果集

考虑以下两个表employees1employees2的结构:

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操作符来合并多个表的数据。

考虑以下三个表table1table2table3的结构:

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;

此查询将返回合并后的结果集,包含了table1table2table3表的所有数据。

3. 总结

UNION ALL是MySQL中用于合并多个SELECT语句结果集的操作符。它允许我们将多个查询的结果集合并为一个结果集,并且保留所有的重复行。在本文中,我们讨论了UNION ALL的基本语法和使用示例。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程