sql中的union和union all的区别-SQL

admin2年前 (2024-06-05)基础运维知识301
点击下载TXT

SQL 中 UNION 和 UNION ALL 的区别

UNION 和 UNION ALL 都是用于合并两个或多个表中的行的 SQL 操作符。然而,它们在处理重复行方面存在根本差异。

UNION

  • 仅返回结果表中唯一(不重复)的行。
  • 它在合并表之前会对各个表中的行进行去重。
  • 如果任意表中存在重复行,它们将仅出现在结果表中一次。

UNION ALL

  • 返回所有行,包括重复行。
  • 它不会对各个表中的行进行去重。
  • 如果任意表中存在重复行,它们将出现在结果表中多次。

示例

假设有两个表 T1 和 T2,如下所示:

T1:
+----+----+
| ID | Name |
+----+----+
| 1  | John |
| 2  | Susan |
| 3  | Mary |
+----+----+

T2:
+----+----+
| ID | Name |
+----+----+
| 2  | Susan |
| 4  | Bob |
+----+----+
登录后复制

如果使用 UNION 操作符合并这两个表:

SELECT * FROM T1 UNION SELECT * FROM T2;
登录后复制

结果将是:

+----+----+
| ID | Name |
+----+----+
| 1  | John |
| 2  | Susan |
| 3  | Mary |
| 4  | Bob |
+----+----+
登录后复制

其中,重复的行(ID = 2,Name = Susan)已被删除。

如果使用 UNION ALL 操作符合并这两个表:

SELECT * FROM T1 UNION ALL SELECT * FROM T2;
登录后复制

结果将是:

+----+----+
| ID | Name |
+----+----+
| 1  | John |
| 2  | Susan |
| 2  | Susan |
| 3  | Mary |
| 4  | Bob |
+----+----+
登录后复制

其中,重复行已包含在结果中。

相关文章

mysql异常捕获怎么处理-mysql教程

MySQL 异常捕获处理 在使用 MySQL 时,异常处理是至关重要的,它可以防止程序在遇到错误时崩溃,并允许程序以优雅的方式继续运行或提供有用的错误信息。 如何处理 MySQL 异常 处理 MyS...

oracle游标怎么使用-Oracle

Oracle 游标的使用 游标是一种数据库对象,允许您逐行访问查询结果集。它在需要循环处理数据或按顺序获取记录时非常有用。 如何使用 Oracle 游标 创建和使用 Oracle 游标涉及以下步骤:...

mysql设置外键怎么写-mysql教程

如何设置 MySQL 外键 在 MySQL 中设置外键可以确保数据完整性,它强制执行父子表之间的引用关系。 语法 ALTER TABLE 子表 ADD FOREIGN KEY (子表列) REFER...

mysql不能启动怎么办-mysql教程

MySQL无法启动:故障排除指南 原因和解决方案: 1. 进程已经启动 检查进程是否已经启动。运行以下命令: ps -ef |grep <a style="color:#f60;...

sql游标怎么写-SQL

SQL 游标 什么是 SQL 游标? SQL 游标是一个用于管理和遍历结果集的结构。它允许应用程序从结果集中向上、向下或随机移动并检索数据。 如何写 SQL 游标? 声明游标: DECLARE cu...

sql日期格式化怎么设置-SQL

SQL 日期格式化设置 如何设置 SQL 日期格式? 在 SQL 中,可以使用 TO_CHAR() 函数来格式化日期值。TO_CHAR() 函数第一个参数指定要转换的日期值,第二个参数指定格式化字符...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。