SQL两个查询结果怎么合并到一起:使用UNION进行多个查询结果的组合和合并
在SQL中,UNION是一个常用的操作符,用于将多个查询结果合并成一个结果集。以下详细介绍如何使用UNION进行多个查询结果的组合和合并,以及相关的注意事项。
基本语法
UNION操作符的基本语法如下:
SELECT column1, column2, ...
FROM table1
WHERE condition
UNION
SELECT column1, column2, ...
FROM table2
WHERE condition;
需要注意的是:
- 每个SELECT语句中的列数和列的数据类型必须一致。
- UNION操作符会自动去除结果集中的重复行。如果想要保留重复行,可以使用UNION ALL。
示例
假设我们有两个表:`employees` 和 `contractors`,它们的结构和数据如下:
-- 创建 employees 表
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100),
department VARCHAR(100)
);
-- 插入数据
INSERT INTO employees (id, name, department) VALUES
(1, 'Alice', 'HR'),
(2, 'Bob', 'IT');
-- 创建 contractors 表
CREATE TABLE contractors (
id INT PRIMARY KEY,
name VARCHAR(100),
department VARCHAR(100)
);
-- 插入数据
INSERT INTO contractors (id, name, department) VALUES
(3, 'Charlie', 'IT'),
(4, 'David', 'Finance');
使用UNION合并查询结果
如果我们想将 `employees` 和 `contractors` 表中的所有人员信息合并成一个结果集,可以使用以下查询:
SELECT id, name, department
FROM employees
UNION
SELECT id, name, department
FROM contractors;
这个查询会返回一个包含所有人员信息的结果集,并且会自动去除重复行。
使用UNION ALL合并查询结果
如果我们想保留重复行,可以使用UNION ALL:
SELECT id, name, department
FROM employees
UNION ALL
SELECT id, name, department
FROM contractors;
多个查询结果的合并
UNION操作符可以用于合并多个查询结果。例如,我们有三个表:`employees`、`contractors` 和 `interns`,可以使用以下查询将它们的结果合并:
SELECT id, name, department
FROM employees
UNION
SELECT id, name, department
FROM contractors
UNION
SELECT id, name, department
FROM interns;
排序合并后的结果集
如果需要对合并后的结果集进行排序,可以在最后一个SELECT语句后面使用ORDER BY子句:
SELECT id, name, department
FROM employees
UNION
SELECT id, name, department
FROM contractors
ORDER BY name;
这个查询会将合并后的结果集按照姓名进行排序。
总之,UNION和UNION ALL是SQL中非常实用的操作符,可以方便地将多个查询结果合并成一个结果集。在使用时,需要注意列的一致性和是否需要去除重复行。