SQL两个查询结果怎么合并到一起:使用UNION进行多个查询结果的组合和合并

频道:问答 日期: 浏览:2

在SQL中,UNION是一个常用的操作符,用于将多个查询结果合并成一个结果集。以下详细介绍如何使用UNION进行多个查询结果的组合和合并,以及相关的注意事项。

基本语法

UNION操作符的基本语法如下:

SELECT column1, column2, ...
FROM table1
WHERE condition
UNION
SELECT column1, column2, ...
FROM table2
WHERE condition;

需要注意的是:

  1. 每个SELECT语句中的列数和列的数据类型必须一致。
  2. UNION操作符会自动去除结果集中的重复行。如果想要保留重复行,可以使用UNION ALL。

示例

假设我们有两个表:`employees` 和 `contractors`,它们的结构和数据如下:

SQL两个查询结果怎么合并到一起:使用UNION进行多个查询结果的组合和合并

-- 创建 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:

SQL两个查询结果怎么合并到一起:使用UNION进行多个查询结果的组合和合并

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;

这个查询会将合并后的结果集按照姓名进行排序。

SQL两个查询结果怎么合并到一起:使用UNION进行多个查询结果的组合和合并

总之,UNION和UNION ALL是SQL中非常实用的操作符,可以方便地将多个查询结果合并成一个结果集。在使用时,需要注意列的一致性和是否需要去除重复行。