码迷,mamicode.com
首页 > 数据库 > 详细

sql union

时间:2017-07-10 13:28:39      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:get   操作   blank   target   email   src   enter   water   电子   

          UNION 操作符用于合并两个或多个 SELECT语句的结果集。请注意。UNION内部的 SELECT 语句必须拥有同样数量的列。列也必须拥有相似的数据类型。

同一时候。每条 SELECT语句中的列的顺序必须同样。

     举例说明:在employees表中。查询工资大于4000和工资在2500---5500之间的雇员编号。电子邮件地址。

select employee_id   as   employeeid ,
          email               as   email,
          salary              as   salary
from employees where salary>8000
union
select employee_id   as   employeeid ,
          email               as   email,
          salary              as   salary
from employees where salary betwee 7000 and 12000;

        

基础知识普及:类似于union这种操作在oracle中叫做集合查询,当中还包含:

Union:对两个结果集进行并集操作,不包含反复行,同一时候进行默认规则的排序;

技术分享

Union All:对两个结果集进行并集操作,包含反复行。不进行排序;

技术分享

Intersect:对两个结果集进行交集操作。不包含反复行。同一时候进行默认规则的排序。

技术分享

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

技术分享

 

注意事项:

1.      在应用union和union all的时候,尽量使用union all(不产生排序操作和去重操作。效率会得到明显的提高)。

2.      关于union默认排序的问题,建议使用额外的order by进行排序。比如:

select * from(
select employee_id  as   employeeid,
          email              as   email,
          salary             as   salary
from employees where salary>8000
union
select employee_id  as   employeeid,
          email              as   email,
          salary             as   salary
from employees where salary betwee 7000 and 12000
) t
order by t.employeeid desc;

 *假设不加order by可能会得出select的排序结果,oracle是不存在默认排序这一说的,在oracle中数据表是无序的堆表,因此select的排序结果事实上就是数据的物理存放顺序读取的

 

sql union

标签:get   操作   blank   target   email   src   enter   water   电子   

原文地址:http://www.cnblogs.com/claireyuancy/p/7145166.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!