首页 > 代码库 > sql union
sql union
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。