浏览 3683 次
锁定老帖子 主题:Oracle——集合运算
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (2)
|
|||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
作者 | 正文 | ||||||||||||||||||||||||||||||||
发表时间:2010-01-22
最后修改:2010-02-03
dept表: select t.deptno from dept t 结果:
emp表: select t.deptno from emp t 结果:
oracle集合函数包括:minus,union,union all,intersect。 1.minus:找到两个给定的数值集合之间的差异,意味着找到一个数值集合,其中的元素仅存在于前一个集合中,而不存在于另一个集合中。 exp: select d.deptno from dept d minus select e.deptno from emp e 结果:
分析:查相同列名的数据,查出的40,只存在与前一张表,即dept表中。 2.union:union连接查询的两张表中相同列名的数据的并集。 exp: select d.deptno from dept d union select e.deptno from emp e 结果:
分析:查出2张表中的并集。 3.union all:union all连接查询两张表中相同列名的所有数据。(与union 不同的是它不去除重复数据)。 exp: select d.deptno from dept d union all select e.deptno from emp e group by e.deptno 结果:
分析:查出2张表中所有的值。 4.intersect:查询intersect连接的两张表中相同列名的数据,查出交集的数据。 select d.deptno from dept d intersect select e.deptno from emp e 结果:
分析:查出2张表中所有的交集。 5.举个例子说明集合运算的应用: question:查询出没有员工的那个部门的部门编号和部门名称. (1).平常做法: select d.deptno 部门编号, d.dname 部门名称 from dept d where d.deptno not in (select distinct (e.deptno) from emp e) (2).使用minus做法: select t.deptno 部门编号, t.dname 部门名称 from dept t where t.deptno in (select d.deptno from dept d minus select e.deptno from emp e) 结果:(一样)
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|||||||||||||||||||||||||||||||||
返回顶楼 | |||||||||||||||||||||||||||||||||