📅  最后修改于: 2020-11-19 02:03:15             🧑  作者: Mango
UNION和UNION ALL是数据库中用于合并多个表的结果集的两个最重要的SQL运算符。这些运算符使我们可以使用多个SELECT查询,检索所需的结果,然后将它们组合为最终输出。在本文中,我们将了解它们之间的区别。在进行比较之前,我们将简要讨论这些运算符。
MySQL中的Union运算符允许我们将来自多个SELECT查询的两个或多个结果组合到单个结果集中。它具有默认功能,可从表中删除重复的行。此运算符语法始终使用第一个SELECT语句中的列名作为输出的列名。
MySQL Union必须遵循以下基本规则:
注意:我们必须知道联合和联接是不同的。
下面的视觉表示更清楚地说明了这一点:
要阅读有关Union运算符的更多信息,请单击此处。
UNION ALL运算符组合来自多个SELECT查询的两个或多个结果,并将所有记录返回到单个结果集中。它不会从SELECT语句的输出中删除重复的行。
我们可以通过以下视觉表示理解它。
下面的比较表快速解释了它们的主要区别:
UNION | UNION ALL |
---|---|
It combines the result set from multiple tables and returns distinct records into a single result set. | It combines the result set from multiple tables and returns all records into a single result set. |
Following is the basic syntax of UNION operator: SELECT column_list FROM table1 UNION SELECT column_list FROM table2; |
Following is the basic syntax of UNION ALL operator: SELECT column_list FROM table1 UNION ALL SELECT column_list FROM table2; |
It has a default feature to eliminate the duplicate rows from the output. | It has no feature to eliminate the duplicate rows from the output. |
Its performance is slow because it takes time to find and then remove duplicate records. | Its performance is fast because it does not eliminate the duplicate rows. |
Most database users prefer to use this operator. | Most database users do not prefer to use this operator. |
让我们通过一个示例来了解Union和Union All运算符之间的区别。假设我们有一个名为“ Student”和“ Student2”的表,其中包含以下数据:
表:学生
表:Student2
以下SQL语句使用UNION查询从两个表中返回城市的唯一名称:
SELECT City FROM student
UNION
SELECT City FROM student2
ORDER BY City;
执行完上面的语句后,我们将得到以下输出,因为Union运算符仅返回不同的值。
以下SQL语句使用UNION ALL查询返回所有城市名称,包括两个表中的重复项:
SELECT City FROM student
UNION ALL
SELECT City FROM student2
ORDER BY City;
执行完上面的语句后,我们将得到以下输出,因为Union All运算符返回整个记录而不消除不同的值。