工具/原料
SQL SERVER 2014 电脑
方法/步骤
1、首先来准备两个select查询,分别查询一个表。
2、用Union将这两个查询连接在一起并且运行SQL语句,出现下图的错误提示,因为Union连接的两个查询,列的数目必须一样。
3、进行修改,让其列的数目一样,还是报错,因为第二个查询中OrderTime是日期类型,而与其对应的第一个查询相应列是字符类型,类型不匹配导致。
4、通过Convert转化一下类型即可。
5、将第一个表和第二个表用Union合并,在将第二个表在和第一个表在Union合并一遍,发现最后一个表没合并进来。若让第三个表也合并进来需要运用Union All。
6、若项调整合并的表的顺序,用空字符串作为第一个列就可以让第二个表的顺序排到最前面。
7、若I想把合并的表放到一个新表里,则需要在第一个表的后面加Into语句。
一、区别
1、显示结果不同
union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来。
2、对重复结果的处理不同
union all是直接连接,取到得是所有值,记录可能有重复;union 是取唯一值,记录没有重复。所以union在进行表链接后会筛选掉重复的记录,union all不会去除重复记录。
3、对排序的处理不同
union将会按照字段的顺序进行排序;union all只是简单的将两个结果合并后就返回。从效率上说,union all 要比union快很多,所以,如果可以确认合并的两个结果集中不包含重复数据且不需要排序时的话,那么就使用union all。
注意事项:
1、union 和 union all都可以将多个结果集合并,而不仅仅是两个,所以可将多个结果集串起来。
2、使用union和union all必须保证各个select 集合的结果有相同个数的列,并且每个列的类型是一样的。但列名则不一定需要相同,oracle会将第一个结果的列名作为结果集的列名。
二、使用方法
1、union:用于对多个select查询结果进行联合。
2、union all:用于对多个select查询结果进行联合。
3、union 和 union all 对select语句的要求:
(1)各个select查询语句中,各个select查询的列数的个数必须相同,不能1个select查询的列数是4列,而另一个select查询的列数是7列。
(2)各个select查询语句中,每个列的数据类型必须相同或相似。不能1个select的第1列是int类型,而另一个select的第1列是nvarchar类型。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)