sql server 中union的用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server 中union的用法相关的知识,希望对你有一定的参考价值。

工具/原料

SQL SERVER 2014   电脑

方法/步骤

1、首先来准备两个select查询,分别查询一个表。

2、用Union将这两个查询连接在一起并且运行SQL语句,出现下图的错误提示,因为Union连接的两个查询,列的数目必须一样。

3、进行修改,让其列的数目一样,还是报错,因为第二个查询中OrderTime是日期类型,而与其对应的第一个查询相应列是字符类型,类型不匹配导致。

4、通过Convert转化一下类型即可。

5、将第一个表和第二个表用Union合并,在将第二个表在和第一个表在Union合并一遍,发现最后一个表没合并进来。若让第三个表也合并进来需要运用Union  All。

6、若项调整合并的表的顺序,用空字符串作为第一个列就可以让第二个表的顺序排到最前面。

7、若I想把合并的表放到一个新表里,则需要在第一个表的后面加Into语句。

参考技术A union就是讲两个查询的结果集合并,有两种用法union和union all,分别是去重复,和不去重复。那位热心网友说反了。应该是下面这样:
select a,b,c from tablea
union
select a,b,c from tableb
结果为tablea与tableb去重后的合集 (不含重复记录)

select a,b,c from tablea
union all
select a,b,c from tableb
结果为tablea与tableb合集(不去重复)本回答被提问者和网友采纳
参考技术B select a,b,c from tablea
union all
select a,b,c from tableb
结果为tablea与tableb并集

select a,b,c from tablea
union
select a,b,c from tableb
结果为tablea与tableb的交集

参考技术C select a,b,c from tablea
union all
select a,b,c from tableb
结果为tablea与tableb合集

select a,b,c from tablea
union
select a,b,c from tableb
结果为tablea与tableb去重后的合集
参考技术D 楼上的说对、就是合在一起、去掉重复的

sql中union和union all的用法

       如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。union(或称为联合)的作用是将多个结果合并在一起显示出来。

       union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。

       union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;union在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表union。union all:对两个结果集进行并集操作,包括重复行,不进行排序; 如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。

        Intersect:对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;

        Minus:对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。

        可以在最后一个结果集中指定Order by子句改变排序方式。

        例如:

                select employee_id,job_id from employees
                union
                select employee_id,job_id from job_history

         以上将两个表的结果联合在一起。这两个例子会将两个select语句的结果中的重复值进行压缩,也就是结果的数据并不是两条结果的条数的和。如果希望即使重复的结果显示出来可以使用union all,例如:

         2.在oracle的scott用户中有表emp
                select * from emp where deptno >= 20
                union all
                select * from emp where deptno <= 30
                这里的结果就有很多重复值了。

         有关union和union all关键字需要注意的问题是:

         union 和 union all都可以将多个结果集合并,而不仅仅是两个,你可以将多个结果集串起来。

使用union和union all必须保证各个select 集合的结果有相同个数的列,并且每个列的类型是一样的。但列名则不一定需要相同,oracle会将第一个结果的列名作为结果集的列名。

         例如下面是一个例子:

                select empno,ename from emp
                union
                select deptno,dname from dept
          我们没有必要在每一个select结果集中使用order by子句来进行排序,我们可以在最后使用一条order by来对整个结果进行排序。例如:
                select empno,ename from emp
                union
                select deptno,dname from dept
                order by ename;















以上是关于sql server 中union的用法的主要内容,如果未能解决你的问题,请参考以下文章

sql server 交集,差集的用法 (集合运算)

sql 中union all有啥用法

sql 查询结果合并union all用法_数据库技巧

数据库中union的用法

SQL中MINUS的用法与UNION的用法

SQL Union和SQL Union All用法