MySQL UNION 操作符
MySQL UNION 操作符
在 MySQL 中,UNION
操作符用于将两个或多个 SELECT
语句的结果集合并为一个结果集并去除重复数据。
语法
以下是 UNION
操作符的语法:
SELECT column1, column2, ... FROM table1
UNION [ALL]
SELECT column1, column2, ... FROM table2
[UNION [ALL]
SELECT column1, column2, ... FROM table3 ...];
其中:
column1
,column2
, …:指定要查询的列。table1
,table2
, …:指定要查询的表。ALL
:可选,表示返回所有结果集,包括重复的行。默认情况下去除重复的行。SELECT
语句的数目没有限制,每个SELECT
后面可以跟随一个UNION
或UNION ALL
操作符。
工作原理
当使用 UNION
操作符时,MySQL 将两个或多个 SELECT
语句的结果合并为一个结果集。如果没有指定 ALL
选项,则 MySQL 会去除结果集中的重复行。如果指定了 ALL
选项,则返回所有行,包括重复的行。
在合并结果集时,MySQL 会根据 SELECT 语句的列数和顺序将结果逐行合并。如果两个 SELECT 语句的列数或列的数据类型不同,则会引发错误。
示例
假设有两个表 orders1
和 orders2
,它们的结构和数据如下:
-- Table orders1
CREATE TABLE orders1 (
id INT,
product_name VARCHAR(50),
price DECIMAL
);
-- Insert data
INSERT INTO orders1 (id, product_name, price)
VALUES (1, 'Apples', 2.50),
(2, 'Bananas', 1.50),
(3, 'Oranges', 3.00);
-- Table orders2
CREATE TABLE orders2 (
id INT,
product_name VARCHAR(50),
price DECIMAL
);
-- Insert data
INSERT INTO orders2 (id, product_name, price)
VALUES (1, 'Apples', 2.50),
(2, 'Bananas', 1.50),
(3, 'Oranges', 3.00),
(4, 'Pears', 2.00);
现在,我们可以使用 UNION
操作符将这两个表的结果组合为一个结果集,如下所示:
SELECT product_name, price FROM orders1
UNION
SELECT product_name, price FROM orders2;
执行以上查询语句后,将返回以下结果:
+-------------+-------+
| product_name| price |
+-------------+-------+
| Apples | 2.50 |
| Bananas | 1.50 |
| Oranges | 3.00 |
| Pears | 2.00 |
+-------------+-------+
在此示例中,我们从 orders1
和 orders2
表中查询了产品名称和价格,并使用 UNION
操作符将结果合并为一个结果集。由于 orders1
和 orders2
表都包含重复的数据,因此我们只得到了四个结果行。
总结
UNION
操作符用于将两个或多个 SELECT
语句的结果集合并为一个结果集,并去除重复数据。它是一个强大而灵活的工具,可以使查询结果更加丰富和有用。使用 UNION
操作符时需要注意一些限制和注意事项,例如,两个 SELECT
语句必须具有相同的列数和数据类型,否则会导致错误。