SQL UNION 是用于合并两个或多个 SELECT 语句的结果集的操作符

本文深入讲解了SQL UNION操作符的使用方法,包括如何合并多个SELECT语句的结果集,并去除重复行。通过具体实例展示了如何从不同表中选取并合并数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQL UNION 是用于合并两个或多个 SELECT 语句的结果集的操作符。它将两个或多个 SELECT 语句的结果合并成一个结果集,并去除重复的行。

以下是一个 SQL UNION 的实例:

假设我们有两个表,一个是 “employees” 表,包含员工的姓名和工资信息,另一个是 “customers” 表,包含客户的姓名和地址信息。我们想要获取所有员工和客户的姓名信息,可以使用 UNION 操作符来实现。

首先,我们可以使用以下 SELECT 语句获取员工的姓名信息:

SELECT name FROM employees;

然后,我们可以使用以下 SELECT 语句获取客户的姓名信息:

SELECT name FROM customers;

最后,我们可以使用 UNION 操作符将两个结果集合并起来:

SELECT name FROM employees
UNION
SELECT name FROM customers;

这样,我们就可以得到一个包含所有员工和客户姓名的结果集,且去除了重复的行。

下面的 SQL 语句从 “Websites” 和 “apps” 表中选取所有不同的country(只有不同的值):
实例
SELECT country FROM Websites
UNION
SELECT country FROM apps
ORDER BY country;
执行以上 SQL 输出结果如下:
在这里插入图片描述
注释:UNION 不能用于列出两个表中所有的country。如果一些网站和APP来自同一个国家,每个国家只会列出一次。UNION 只会选取不同的值。请使用 UNION ALL 来选取重复的值!
当然可以!SQL的UNION操作符用于合并两个或多个SELECT语句的结果集。请注意,使用UNION时,每个SELECT语句必须拥有相同数量的列,并且对应列的数据类型必须大致相同。此外,列也必须以相同的顺序列出。
以下是使用UNION操作符的简单实例:
假设我们有两个表:Customers 和 Suppliers。

  1. Customers 表:
+----+---------+-------+
| ID | Name     | City   |
+----+---------+-------+
|  1 | Customer1| City A |
|  2 | Customer2| City B |
|  3 | Customer3| City C |
+----+---------+-------+
  1. Suppliers 表:
+----+---------+-------+
| ID | Name     | City   |
+----+---------+-------+
|  1 | Supplier1| City D |
|  2 | Supplier2| City E |
|  3 | Supplier3| City F |
+----+---------+-------+

如果我们想要从这两个表中选择所有的行,并将它们合并为一个结果集,我们可以使用UNION操作符如下:

SELECT Name, City FROM Customers
UNION
SELECT Name, City FROM Suppliers;

这将返回以下结果集:

+---------+-------+
| Name     | City   |
+---------+-------+
| Customer1| City A |
| Customer2| City B |
| Customer3| City C |
| Supplier1| City D |
| Supplier2| City E |
| Supplier3| City F |
+---------+-------+

请注意以下几点:

  • UNION操作符会自动去除重复的行。如果你希望保留重复行,可以使用UNION ALL。
  • UNION操作符要求每个SELECT语句有相同数量的列,并且列的顺序必须相同。数据类型也必须大致相同。如果数据类型不同,可能会导致数据转换问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bol5261

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值