SQL中UNION的用法

SQL中UNION的用法

SQL中UNION的用法

1. 介绍

在SQL中,UNION是一种用于合并两个或多个SELECT语句结果集的操作符。它可以将两个或多个查询的结果合并为一个结果集,并且自动去重。UNION操作要求参与合并的查询具有相同的列数和列类型,但是它们不必按照相同的顺序列出。

2. UNION的语法

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

SELECT column1, column2, ...
FROM table_name1
UNION
SELECT column1, column2, ...
FROM table_name2;

首先,我们使用SELECT语句从两个表(table_name1table_name2)中选择要查询的列(column1column2等)。然后,我们使用UNION操作符来合并两个查询的结果。

值得注意的是,SELECT语句中的列数必须相同,而且相应的列的数据类型也必须兼容。

3. UNION的示例

为了更好地理解UNION的用法,让我们通过一些示例来演示它的工作原理。

假设我们有两个表格employeescustomers,它们具有相同的列名,但是存储了不同类型的数据。

创建示例表格

我们首先创建一个名为employees的表格,并向其添加一些数据:

CREATE TABLE employees (
  id INT PRIMARY KEY,
  name VARCHAR(100),
  department VARCHAR(100)
);

INSERT INTO employees (id, name, department)
VALUES (1, 'John Doe', 'Sales');
INSERT INTO employees (id, name, department)
VALUES (2, 'Jane Smith', 'Finance');

然后,我们创建一个名为customers的表格,并向其添加一些数据:

CREATE TABLE customers (
  id INT PRIMARY KEY,
  name VARCHAR(100),
  city VARCHAR(100)
);

INSERT INTO customers (id, name, city)
VALUES (1, 'Alice Johnson', 'New York');
INSERT INTO customers (id, name, city)
VALUES (2, 'Bob Davis', 'Los Angeles');

使用UNION合并两个表格的结果

现在,我们可以使用UNION操作符来合并employeescustomers表格的结果:

SELECT id, name, department
FROM employees
UNION
SELECT id, name, city
FROM customers;

运行以上查询,我们将得到以下结果:

id | name          | department
---+---------------+------------
1  | John Doe      | Sales
2  | Jane Smith    | Finance
1  | Alice Johnson | NULL
2  | Bob Davis     | NULL

结果中的前两行来自employees表格,后两行来自customers表格。由于我们使用了UNION操作符,结果中的重复行已经被自动去重。

需要注意的是,由于department列和city列的数据类型不同,因此在合并结果中,city列的数据类型被转换为VARCHAR(100)的类型,在NULL值的位置上。

使用UNION ALL合并两个表格的结果

与UNION不同,UNION ALL不会自动去重结果集中的重复行。下面是使用UNION ALL操作符合并两个表格的结果的示例:

SELECT id, name, department
FROM employees
UNION ALL
SELECT id, name, city
FROM customers;

运行以上查询,我们将得到以下结果:

id | name          | department
---+---------------+------------
1  | John Doe      | Sales
2  | Jane Smith    | Finance
1  | Alice Johnson | NULL
2  | Bob Davis     | NULL

结果与使用UNION操作符相同,但是它保留了结果集中的重复行。

4. 总结

通过使用UNION操作符,我们可以将多个查询的结果合并为一个结果集,并且自动去重。UNION操作要求合并的查询具有相同的列数和列类型,但是它们不必按照相同的顺序列出。

值得注意的是,UNION操作是一种相对较慢的操作,因为它涉及内部排序和去重的操作。因此,在使用UNION操作时,我们应该谨慎考虑性能问题。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程