sql联盟如果必须合并两个或多个查询的结果集,并将每个查询返回的所有行显示为一个结果集,那么应该使用哪个操作符?解决方案是使用联盟操作符。UNION有两个选择- UNION和UNION ALL。

除MySQl外,大多数平台(如DB2、Oracle、SQL server和Postgre SQL)都支持集合操作符UNION或UNION ALL。如果您想重新收集关于表、SQL数据库操作和编程的信息,那么面向初学者的SQL数据库6天学习SQL都是很好的复习课程。如果您需要关于编写SQL查询和学习如何构建应用程序或生成业务报告的进一步指导,请参阅SQL培训简介

UNION Statement -它是关于什么的?

UNION命令用于从两个表中选择相关信息,类似于JOIN命令,但不同之处在于JOIN组合了两个表中的列。使用UNION,默认情况下只选择不同的值。UNION语句有效地对结果集执行SELECT DISTINCT。

当使用UNION时,请记住在所有查询中列的顺序、数量和数据类型应该相同。数据类型不必相同,但应该兼容。例如,CHAR和VARCHAR是兼容的数据类型。

SQL Server中的UNION语句

UNION操作符用于组合两个或多个SELECT语句的结果集。

下面是一些在SQL中使用UNION的简单规则:

UNION中的每个SELECT语句必须具有相同数量的列,并且列必须具有类似或兼容的数据类型。

每个SELECT语句中的列必须顺序相同。

如果两个表的列大小不同,那么在返回数据时,SQL server将使用两个列中较大的一个。因此,如果一个SELECT....联盟statement has a CHAR (5) and CHAR (10) column, then it will display output data of both the columns as a CHAR (10) column.

如果表中的列有不同的列名,那么通常使用第一个查询的列名。

SQL联盟的语法:

SELECT column_name(s) FROM table1

联盟

SELECT column_name(s) FROM table2;

SQL Server中的UNION ALL语句

UNION ALL命令与UNION命令类似,区别在于UNION ALL选择所有值。因此,使用UNION ALL不会消除重复行,而是包括它们。这个操作符只是从满足查询的所有表中提取所有行,并将它们合并到一个表中。如果您确定从UNION操作返回的所有记录都是惟一的,那么使用UNION all是更好的选择,因为它可以提供更快的结果。UNION ALL的结果是未排序的。因此,在获得结果之后,可以通过使用最后一个SELECT语句的ORDER by子句对它们进行排序。

SQL UNION ALL语法:

SELECT column_name(s) FROM table1

UNION ALL

SELECT column_name(s) FROM table2;

Oracle中的UNION和UNION ALL

Oracle在以下情况下不支持UNION或UNION ALL查询:

UNION和UNION ALL语句的例子

为了比较UNION和UNION ALL,让我们取下包含City、State和Zip列的“Contacts”表。

城市国家邮政编码

纳什维尔TN 37235

劳伦斯KS 66049

科瓦利斯或97333

UNION ALLSQL语句

如果我们应用UNION ALL SQL语句,那么我们将合并两个查询,这两个查询将检索并合并来自Tennessee (' TN ')的记录两次。

选择城市,州,邮政

从联系人

WHERE State IN (' KS ', ' TN ')

UNION ALL

SELECT City, State, Zip FROM Contacts WHERE IN (' OR ' TN ')

UNION ALL语法的结果:

城市国家邮政编码

纳什维尔TN 37235

劳伦斯KS 66049

纳什维尔TN 37235

科瓦利斯或97333

使用UNION ALL语法,TN记录出现两次,因为两个SELECT语句都检索TN记录。

联盟SQL语句

我们现在通过编写语法来使用SQL UNION命令:

SELECT City, State, Zip FROM Contacts WHERE State IN (' KS ', ' TN ')

联盟

SELECT City, State, Zip FROM Contacts WHERE IN (' OR ' TN ')

UNION查询的结果如下:

城市国家邮政编码

科瓦利斯或97333

劳伦斯KS 66049

纳什维尔TN 37235

注意,TN记录只出现一次,尽管两个SELECT语句都检索TN记录。UNION语法自动消除两个SQL语句之间的重复记录,并对结果进行排序。结果显示的记录是按字母顺序排序的,因此Corvallis记录首先出现,即使它来自第二个SELECT语句。可以在末尾添加GROUP BY子句对列表进行排序。

根据定义,UNION查询消除了所有重复的行,与UNION all相比,它要慢一些,因为它要执行排序操作。要在SQL Server中做到这一点,UNION语句必须在两个查询返回的所有列上构建一个临时索引。如果无法为查询构建索引,则会得到一个SQL错误。在这种情况下,最好使用UNION ALL语句。

在DB2数据库系统中,可以使用UNION和UNION ALL以及VALUES子句。

结论

如果您还记得使用UNION和UNION ALL的简单规则以及相同的语法,那么根据您的需求组合表就变成了一项简单的任务。如果您想研究基本的SQL查询和其他代码语句,那么检查是一个好主意SQL查询101.如果你想收集关于Oracle SQL和Oracle PL/SQL编程的知识,那么它可能值得一看Oracle SQL简介,或Oracle PL/SQL教程-一个全面的培训课程

SQL顶级课程

SQL和PostgreSQL:完整的开发人员指南
Stephen主梁
4.7 (1340)
评价最高
完整的SQL训练营2021:从零到英雄
何塞Portilla
4.7 (97704)
畅销书
终极MySQL训练营:从SQL初学者到专家
柯尔特·斯蒂尔,这是伊恩·斯库诺弗
4.6 (53535)
畅销书
SQL - MySQL的数据分析和商业智能
365年职业生涯
4.6 (27320)
畅销书
高级SQL: SQL专家认证准备课程
8万多名学员,Code Star学院
4.4 (2089)
完整的SQL和数据库训练营:零到精通[2021]
Andrei Neagoie, Mo Binni
4.6 (1391)
SQL初学者:学习SQL使用MySQL和数据库设计
Tim Buchalka的学习编程学院,Jon Avis - SQL讲师
4.5 (9909)
SQL & PostgreSQL初学者:成为一个SQL专家
Jon Avis - SQL讲师
4.5 (3156)
畅销书
实用SQL训练营的数据分析师和数据科学家
艾娃中科院博士
4.4 (619)

多个SQL课程

SQL学生也学习

让你的团队。领导行业。

使用Udemy for Business订阅在线课程库和数字学习工具。

请求一个演示