loading请求处理中...

SQL Server 之 u nion

2021-12-02 07:59:03 阅读 9476次 标签: sql数据库 作者: yf8488240

表的合并操作将两个表的行合并到了一个表中,且不需要对这些行做任何更改。

在构造合并查询时,必须遵循以下几条规则:

  • 两个s elect语句选择列表中的列数目必须一样多,而且对应位置上的列的数据类型必须相同或者兼容
  • 列的名字或者别名是由第一个s elect语句的选择列表决定的
  • 可以为每个s elect语句都增加一个表示行的数据来源的表达式
  • 可以将合并操作作为s elect into命令的一部分使用,但是into关键字必须放在第一个s elect语句中
  • 虽然s elect命令在默认情况下不会去掉重复行,除非明确地为它指定distinct关键字。但是,合并操作却与之相反,在默认情况下,合并操作将会去掉重复的行;如果希望返回重复的行,就必须明确的指定all关键字
  • 用对所有s elect语句的合并操作结果进行排序的order by子句,必须放到最后一个s elect后面,但它所使用的排序列名必须是第一个s elect选择列表中的列名

 SQL Server 之 u nion             SQL Server 之 u nion

                           学生表                                                                                        老师表

 

 

1.u nion与联接之间的区别

合并操作与联接相似,因为他们都是将两个表合并起来并形成另一个表的方法。然而,他们的合并方法有本质的不同

                 A

  • 合并: B             联接:  AB

具体的不同:

(1)在合并中,两个表源列的数量与数据类型必须相同;在联接中,一个表的行可能与另一个表的行有很大区别,结果表的列可能来自第一个表、第二个表或两个表都有。

(2)在合并中,行的最大数量是两个表行的“和”;在联接中,行的最大数量是它们的“乘积”

 

1.1 使用u nion合并表

注意:两个选择出的表,列数必须相同

SQL Server 之 u nion

1.2 使用u nion all合并表

u nion all的功能是不删除重复行也不对行进行自动排序。加上all关键字需要计算资源少,所以尽可能使用。

以下的情况应该尽可能使用u nion all:

  • 知道有重复行并想保留这些行
  • 知道不可能有任何重复的行
  • 不在乎是否有任何重复的行

SQL Server 之 u nion

 

1.3 u nion中的order by子句

合并表时有且只能有一个order by子句,并且必须将它放置在语句的末尾,它在两个s elect语句中都提供了用于合并所有行的排序。

下面列出order by子句可以使用的排序依据:

  • 来自第一个s elect子句的别名
  • 来自第一个s elect子句的列别名
  • u nion中列的位置的编号

SQL Server 之 u nion

 

1.4 u nion中的自动数据类型转换

合并表时,两个表源中对应的列数据类型不必相同,只要是数据类型兼容就可以。

SQL Server 之 u nion

1.5 使用u nion合并不同类型的数据

当合并表时,两个表源中相对应的列即使数据类型不一致也能合并,这是需要借助数据类型转换函数。

SQL Server 之 u nion

 

1.6 使用u nion合并有不同列数的两个表

当合并两个表源时列数不同,只要向其中一个表源添加列,就可以实现两表源列数相同。

SQL Server 之 u nion

开发公司推荐

成为一品威客服务商,百万订单等您来有奖注册中

留言( 展开评论

快速发任务

价格是多少?怎样找到合适的人才?

官方顾问免费为您解答