MySQL的联合查询(Union Query)是一种将多个SELECT语句的结果合并成一个结果集的方法。这些SELECT语句必须具有相同数量的列,并且对应的列必须具有相似的数据类型。联合查询通常用于合并来自多个表的数据,或者在单个查询中执行多个条件筛选。
假设有两个表 employees 和 contractors,它们都有 name 和 salary 列:
-- employees 表
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100),
salary DECIMAL(10, 2)
);
-- contractors 表
CREATE TABLE contractors (
id INT PRIMARY KEY,
name VARCHAR(100),
salary DECIMAL(10, 2)
);
-- 插入示例数据
INSERT INTO employees (id, name, salary) VALUES (1, 'Alice', 5000);
INSERT INTO employees (id, name, salary) VALUES (2, 'Bob', 6000);
INSERT INTO contractors (id, name, salary) VALUES (1, 'Charlie', 5500);
INSERT INTO contractors (id, name, salary) VALUES (2, 'David', 6500);
-- 使用 UNION 查询
SELECT name, salary FROM employees
UNION
SELECT name, salary FROM contractors;原因:可能是由于列的数量或数据类型不匹配,或者使用了错误的联合类型(如使用了UNION ALL而不是UNION)。
解决方法:
原因:联合查询可能会涉及大量的数据扫描和排序操作,导致性能下降。
解决方法:
通过以上信息,你应该能够更好地理解和应用MySQL的联合查询。