SQL UNION 和 UNION ALL的区别
UNION 和 UNION ALL 运算符只是SQL中代数集合运算符的实现方法。它们都用于从多个表中检索行并将它们作为一个单一表返回。这两个运算符的区别在于,UNION只返回不同的行,而UNION ALL返回表中所有的行。
然而,为了在这些表上使用这些运算符,它们需要遵循以下条件−
- 要组合的表必须具有相同数量和相同数据类型的列。
- 行数不需要相同。
一旦满足了这些条件,UNION或UNION ALL运算符将从多个表中返回行作为结果表。
注意 −第一个表的列名将成为结果表的列名,并且第二个表的内容将与相同数据类型的结果列合并。
什么是UNION
UNION是一种SQL中的运算符/子句,它与关系代数中的并运算符类似。它仅仅是将来自多个具有并集兼容性的表的信息组合在一起。
只有来自这些表的不同行被添加到结果表中,因为UNION会自动消除所有重复记录。
语法
以下是SQL中UNION运算符的语法−
示例
首先,我们创建两个表“COURSES_PICKED”和“EXTRA_COURSES_PICKED”,这两个表具有相同数量的列和相同的数据类型。
使用以下查询创建表COURSES_PICKED−
使用下面的查询向COURSES_PICKED表中插入值:
这个表格将被显示为 −
使用以下查询创建表EXTRA_COURSES_PICKED –
以下是将值插入到EXTRA_COURSES_PICKED表的查询语句 –
表格将按如下所示创建-
现在,让我们尝试使用UNION查询将这两个表合并如下 –
输出
执行 UNION 操作后获得的结果表是:
什么是UNION ALL
UNION ALL也是SQL中的一个操作符/子句,用于将多个表合并为一个。然而,这个操作符也会保留结果表中的重复行。
假设有两个表,一个表包含球员在国际比赛中参赛的次数,另一个表包含球员在国内比赛中参赛的次数。
正如我们在上面的表格中所看到的,科里在国际比赛中出战了234场比赛,在国内比赛中也出战了234场比赛。尽管这些列中的数据是相同的,但它们都是不同的比赛。在结果表中显示一名球员总共出战的比赛时,需要包括这两行数据。因此,在这种情况下,我们使用 UNION ALL 运算符。
语法
UNION ALL运算符在SQL中的语法如下:
示例
在下面的示例中,让我们尝试在上面给出的相同样本表” COURSES_PICKED”和” EXTRA_COURSES_PICKED”上执行UNION ALL操作,使用以下给定的查询−
输出
结果表如下所示: