MySQL中的UNION
操作符用于合并两个或多个SELECT
语句的结果集,并且会自动去除重复的记录。如果你需要包含重复的记录,可以使用UNION ALL
。
UNION
操作符要求每个SELECT
语句必须有相同数量的列,并且对应的列必须具有相似的数据类型。列的顺序必须相同。
UNION ALL
。UNION
:合并结果集并去除重复记录。UNION ALL
:合并结果集但不去除重复记录。当你需要从多个表中获取数据,并且这些表的结构相似时,可以使用UNION
。例如,从两个部门的员工表中获取所有员工的信息。
假设有两个表employees_dept1
和employees_dept2
,结构如下:
CREATE TABLE employees_dept1 (
id INT PRIMARY KEY,
name VARCHAR(100),
department VARCHAR(50)
);
CREATE TABLE employees_dept2 (
id INT PRIMARY KEY,
name VARCHAR(100),
department VARCHAR(50)
);
插入一些示例数据:
INSERT INTO employees_dept1 (id, name, department) VALUES
(1, 'Alice', 'HR'),
(2, 'Bob', 'Engineering');
INSERT INTO employees_dept2 (id, name, department) VALUES
(2, 'Bob', 'Engineering'),
(3, 'Charlie', 'Marketing');
使用UNION
合并这两个表的数据:
SELECT * FROM employees_dept1
UNION
SELECT * FROM employees_dept2;
结果集将是:
| id | name | department | |----|----------|------------| | 1 | Alice | HR | | 2 | Bob | Engineering| | 3 | Charlie | Marketing |
UNION
时会出现重复记录?SELECT
语句返回的结果集中有相同的记录,而你使用了UNION
而不是UNION ALL
,MySQL会自动去除这些重复的记录。UNION ALL
。UNION
时某些列的数据类型不匹配?UNION
要求所有SELECT
语句中的列必须具有相似的数据类型。SELECT
语句中的列具有相同的数据类型和顺序。UNION
时性能较差?UNION
操作需要对结果集进行去重处理,这可能会影响性能,尤其是在处理大量数据时。UNION ALL
来提高性能。希望这些信息对你有所帮助!
领取专属 10元无门槛券
手把手带您无忧上云