集合操作函数:union、union all、intersect、minus
1.使用集合操作函数注意事项
1> 集合操作符不适用于LOB、VARRAY和嵌套表列。
2> UNION、INTERSECT、MINUS操作符不适用于 LONG列。
3> 如果选择列表中包含有表达式或者函数,那么必须为表达式或者函数定义列别名。
4> 可以使用order by,order by必须放在最后一条select语句之后,当列名相同时,可以直接用列名排序,如果不同可以用位置排序,也可以使用别名使其相同。
2.集合操作函数
2.1 union(无重并集)
----当执行union时,自动去掉结果集中的重复行,并以第一列的结果进行升序排序。
2.2 union all(有重并集)
----不去掉重复行,并且不对结果进行排序。
2.3 intersect(交集)
----取两个结果集的交集,并且以第一列的结果进行升序排列。
2.4 minus(差集)
----只显示在第一个集合中存在,在第二个集合中不存在的数据。并且以第一列的结果进行升序排序。
3.示列
SQL> create table shall.emp as select empno id,ename name,job,hiredate,sal,deptno from scott.emp where empno in (7369,7499,7521,7566);
3.1 union(无重并集)
select id,name from shall.emp
union
select empno,ename from scott.emp order by 2;
ID NAME
---------- --------------------------------------------------
7876 ADAMS
7499 ALLEN
7698 BLAKE
7782 CLARK
7902 FORD
7900 JAMES
7566 JONES
7839 KING
7654 MARTIN
7934 MILLER
7788 SCOTT
7369 SMITH
7844 TURNER
7521 WARD
14 rows selected.
3.2 union all(有重并集)
select id,name from shall.emp
union all
select empno,ename from scott.emp order by 2;
ID NAME
---------- --------------------------------------------------
7876 ADAMS
7499 ALLEN
7499 ALLEN
7698 BLAKE
7782 CLARK
7902 FORD
7900 JAMES
7566 JONES
7566 JONES
7839 KING
7654 MARTIN
7934 MILLER
7788 SCOTT
7369 SMITH
7369 SMITH
7844 TURNER
7521 WARD
7521 WARD
18 rows selected.
3.3 intersect(交集)
select id,name from shall.emp
intersect
select empno,ename from scott.emp order by 2;
ID NAME
---------- --------------------------------------------------
7499 ALLEN
7566 JONES
7369 SMITH
7521 WARD
3.4 minus(差集)
insert into shall.emp(id,name) values(111,'ssss');
select id,name from shall.emp
minus
select empno,ename from scott.emp order by 2;
ID NAME
---------- --------------------------------------------------
111 ssss
reference http://www.2cto.com/database/201304/204893.html
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30130773/viewspace-2123471/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30130773/viewspace-2123471/