UNION
是 MySQL 中的一个集合操作符,用于合并两个或多个 SELECT
语句的结果集,并去除重复的行。与 UNION ALL
不同,UNION
会自动去除重复的记录。
UNION
高。假设有两个表 employees
和 contractors
,结构如下:
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100),
role VARCHAR(50)
);
CREATE TABLE contractors (
id INT PRIMARY KEY,
name VARCHAR(100),
role VARCHAR(50)
);
现在,我们想获取所有员工和承包商的名单,并去除重复项:
SELECT name, role FROM employees
UNION
SELECT name, role FROM contractors;
UNION
可能会导致性能下降。可以考虑使用 UNION ALL
(如果不需要去重)或优化查询计划。UNION
默认会去除重复行,但不会保留各个 SELECT
语句的排序。如果需要排序,可以在每个 SELECT
语句中使用 ORDER BY
,或在最外层使用 ORDER BY
(但此时需要使用 UNION ALL
并手动去重)。SELECT
语句返回的列的数据类型不匹配,会导致错误。确保所有 SELECT
语句返回的列具有相同的数据类型和顺序。通过以上信息,您应该对 MySQL 的 UNION
操作有了更深入的了解,并能够在实际开发中更好地应用它。
领取专属 10元无门槛券
手把手带您无忧上云