如何使用MySQL的UNION函数合并多个查询结果

什么是MySQL的UNION函数?

在MySQL中,UNION函数可以将多个查询语句的结果合并为一个结果集。这个函数类似于其他编程语言中的数组合并或集合合并操作。

使用UNION函数需要满足以下两个要求:

所有SELECT语句中的列数必须相同

每个SELECT语句中的列类型必须兼容

了解了UNION函数的基本概念之后,下面开始介绍如何使用这个函数来合并多个查询结果。

使用UNION合并两个结果集

步骤一:创建两个表格

为了方便演示,我们需要在MySQL中创建两个表格,用于存放我们的数据。

CREATE TABLE first_table (

id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,

name VARCHAR(30) NOT NULL,

age INT(3) NOT NULL

);

CREATE TABLE second_table (

id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,

name VARCHAR(30) NOT NULL,

age INT(3) NOT NULL

);

以上代码创建了两个简单的表格,它们都包含两列:name和age。

步骤二:向表格中插入数据

为了使这两个表格有一些数据可用,我们需要在它们中插入一些行:

INSERT INTO first_table (name, age) VALUES

('John', 24),

('Mary', 33),

('Tom', 50);

INSERT INTO second_table (name, age) VALUES

('Sarah', 27),

('David', 43),

('Janice', 19);

步骤三:使用UNION合并两个表格

现在两个表格都有数据可用了,我们可以使用UNION操作将它们合并为一个结果集:

SELECT name, age FROM first_table

UNION

SELECT name, age FROM second_table;

以上代码将会返回以下结果:

+--------+-----+

| name | age |

+--------+-----+

| John | 24 |

| Sarah | 27 |

| David | 43 |

| Mary | 33 |

| Janice | 19 |

| Tom | 50 |

+--------+-----+

这个结果集包含两个查询的所有行,并且所有行都已按name列进行了排序。

使用UNION合并多个结果集

步骤一:创建新表格

我们需要首先创建一个新表格,用于存储多个结果集:

CREATE TABLE combined_table (

id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,

name VARCHAR(30) NOT NULL,

age INT(3) NOT NULL

);

步骤二:向表格中插入数据

为了演示目的,我们将使用前面的两个表,但是这次我们将插入一些新的行以创建更多的结果集:

INSERT INTO first_table (name, age) VALUES

('Linda', 19),

('Mike', 58),

('Rebecca', 44)

;

INSERT INTO second_table (name, age) VALUES

('Peter', 31),

('Jane', 48),

('Kevin', 23)

;

步骤三:使用UNION ALL合并多个表格

这次,我们将使用UNION ALL操作,以便返回多个结果集。请注意,UNION ALL与UNION操作非常相似,但是它不会删除任何重复的行。因此,如果多个表具有相同的行,则每个行都会在结果集中出现一次。

SELECT name, age FROM first_table

UNION ALL

SELECT name, age FROM second_table

UNION ALL

SELECT name, age FROM first_table

UNION ALL

SELECT name, age FROM second_table;

这个查询将返回以下结果:

+---------+-----+

| name | age |

+---------+-----+

| John | 24 |

| Mary | 33 |

| Tom | 50 |

| Sarah | 27 |

| David | 43 |

| Janice | 19 |

| Linda | 19 |

| Mike | 58 |

| Rebecca | 44 |

| Peter | 31 |

| Jane | 48 |

| Kevin | 23 |

| John | 24 |

| Mary | 33 |

| Tom | 50 |

| Sarah | 27 |

| David | 43 |

| Janice | 19 |

| Linda | 19 |

| Mike | 58 |

| Rebecca | 44 |

| Peter | 31 |

| Jane | 48 |

| Kevin | 23 |

+---------+-----+

这个结果集包含四个查询的所有行,并且以name列进行排序。请注意,有些行出现了两次,这是因为我们使用的是UNION ALL而不是UNION。

总结

使用MySQL的UNION函数可以合并多个查询结果,这对于需要将多个结果集合并到一起并进行排序的情况非常有用。在使用UNION操作时,我们需要确定所有查询语句具有相同的列数和类型。如果存在重复的行,则可以使用UNION ALL而不是UNION。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

数据库标签