MySQL 差异:Union与Union All

2024年10月21日 MySQL 差异 Union与Union All 极客笔记

MySQL 差异:Union与Union All

UNION和UNION ALL是数据库中用于将多个表的结果集合并的两个最基本的SQL操作符。 这些操作符允许我们使用多个SELECT查询,检索所需的结果,然后将它们合并为最终输出 。在本文中,我们将看到它们彼此之间有何不同。在进行比较之前,我们将简要讨论这些操作符。

Union操作符是什么?

MySQL中的Union操作符 允许我们将来自多个SELECT查询的两个或更多结果组合成一个结果集。它具有一个默认功能,即 删除表中的重复行 。该操作符的语法总是使用第一个 SELECT语句中的列名 作为输出的列名。

**MySQL Union操作必须遵循以下基本规则: **

  • 所有查询中的列的数量和顺序应该相同。
  • 每个SELECT查询的对应列位置必须具有兼容的数据类型。
  • 在不同的SELECT查询中选择的列名必须按相同顺序。
  • 第一个SELECT查询的列名将成为输出的列名。

注意:我们必须知道Union和Join是不同的。

  1. Join将来自多个不同表的数据合并,而Union将来自多个相似的表的数据合并。
  2. Join将输出水平追加,而Union则将结果集合并垂直排列。

以下视觉表示更清楚地解释了它:

关于Union运算符的更多信息, 点击这里 。

什么是Union All?

UNION ALL运算符将来自多个SELECT查询的两个或多个结果组合起来,并将所有记录返回到单个结果集中。它不会从SELECT语句的输出中删除重复的行。

我们可以通过以下可视化表示来理解它。

Union vs. Union All运算符

以下对比表以简洁的方式解释了它们的主要区别:

UNION UNION ALL
它将多个表的结果集合并,并将不同的记录返回到单个结果集中。 它将多个表的结果集合并,并将所有记录返回到单个结果集中。
下面是UNION运算符的基本语法:SELECT column_list FROM table1 UNION SELECT column_list FROM table2; 下面是UNION ALL运算符的基本语法:SELECT column_list FROM table1 UNION ALL SELECT column_list FROM table2;
它有一个默认功能,可以消除输出中的重复行。 它没有功能来消除输出中的重复行。
它的性能较慢,因为它需要时间来查找并删除重复记录。 它的性能较快,因为它不消除重复行。
大多数数据库用户偏爱使用该运算符。 大多数数据库用户不喜欢使用该运算符。

Union和Union All的示例

让我们通过一个例子来理解Union和Union All操作符之间的区别。假设我们有一个名为“ Student ”和一个名为“ Student2 ”的表,它们包含以下数据:

表:Student

表格:学生2

以下SQL语句使用UNION查询从两个表中返回 不同城市的名称 :

SELECT City FROM student
UNION
SELECT City FROM student2
ORDER BY City;

执行上述语句后,我们将得到以下输出,因为Union操作符只返回不重复的值。

以下SQL语句通过使用UNION ALL查询,从两个表中返回包含重复的所有城市名称: all cities name including duplicates

SELECT City FROM student
UNION ALL
SELECT City FROM student2
ORDER BY City;

执行上述语句后,我们将获得以下输出,因为Union All运算符返回整个记录而不消除不同的值。

本文链接:http://so.lmcjl.com/news/15922/

展开阅读全文