Union 是 SQL 中的一个集合操作符,用于合并两个或多个 SELECT 语句的结果集。它会自动去除重复的行。Union 操作要求每个 SELECT 语句必须有相同数量的列,并且对应的列必须具有相似的数据类型。
假设我们有两个表 employees
和 contractors
,它们都有 name
和 salary
列。我们想要获取所有员工和承包商的名单及其薪水,可以使用 Union 来合并这两个表的结果。
SELECT name, salary FROM employees
UNION
SELECT name, salary FROM contractors;
原因:
解决方法:
SELECT name, salary FROM employees
UNION
SELECT name, salary FROM contractors
ORDER BY salary DESC;
原因:
解决方法:
SELECT name, salary FROM employees WHERE salary > 50000
UNION
SELECT name, salary FROM contractors WHERE salary > 50000;
假设我们有两个表 employees
和 contractors
,结构如下:
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100),
salary DECIMAL(10, 2)
);
CREATE TABLE contractors (
id INT PRIMARY KEY,
name VARCHAR(100),
salary DECIMAL(10, 2)
);
插入一些示例数据:
INSERT INTO employees (id, name, salary) VALUES
(1, 'Alice', 60000),
(2, 'Bob', 70000);
INSERT INTO contractors (id, name, salary) VALUES
(1, 'Charlie', 55000),
(2, 'David', 65000);
使用 Union 合并结果:
SELECT name, salary FROM employees
UNION
SELECT name, salary FROM contractors
ORDER BY salary DESC;
通过以上内容,你应该对 Union 混合结果的 SQL 子查询有了全面的了解,并且知道如何解决可能遇到的问题。
领取专属 10元无门槛券
手把手带您无忧上云