UNION
是 MySQL 中的一个 SQL 操作符,用于合并两个或多个 SELECT
语句的结果集,并去除重复的行。UNION
内部的每个 SELECT
语句必须具有相同数量的列,列的数据类型必须兼容。
UNION
会去除结果集中的重复行。UNION
可能比多次执行单个查询更高效。假设你有两个表,一个是 employees
表,另一个是 contractors
表,它们都有 name
和 salary
列。你想获取所有员工和承包商的名字和薪水,可以使用 UNION
:
SELECT name, salary FROM employees
UNION
SELECT name, salary FROM contractors;
如果你不想去除重复行,可以使用 UNION ALL
:
SELECT name, salary FROM employees
UNION ALL
SELECT name, salary FROM contractors;
UNION
查询结果不正确?原因:
SELECT
语句中的列数必须相同。UNION
默认会去除重复行,可能会影响结果的顺序。解决方法:
SELECT
语句中的列数相同。SELECT
语句中使用 ORDER BY
,或者在最终结果上使用 ORDER BY
。SELECT name, salary FROM employees ORDER BY salary
UNION
SELECT name, salary FROM contractors ORDER BY salary;
UNION
查询中的性能问题?原因:
解决方法:
WHERE
子句和 ORDER BY
子句的列。-- 创建索引
CREATE INDEX idx_name ON employees(name);
CREATE INDEX idx_salary ON employees(salary);
CREATE INDEX idx_contractor_name ON contractors(name);
CREATE INDEX idx_contractor_salary ON contractors(salary);
希望这些信息对你有所帮助!如果有更多问题,请随时提问。
领取专属 10元无门槛券
手把手带您无忧上云