您的位置:首页 > 数据库 > Oracle

Oracle 取两个表中数据的交集并集差异集合

2014-09-25 15:28 225 查看

关键字: Oracle 取两个表中数据的交集 [b]INTERSECT [/b]

Oracle 作为一个大型的关系数据库,日常应用中往往需要提取两个表的交集数据

例如现有如下表,要求找出工资2500(不含2500)以上并且是男性(M)的员工编号,那么就要利用这两个表的关系做一个交集了

employee

CODE
NAME
GENDER
001TomM
002JerryM
003AnaF
salary

CODE
SALARY
0012800
0022500
0033000
方法1:利用操作符INTERSECT

INTERSECT 操作符用来合并两个查询,返回两个查询中都存在的记录,即返回两个查询结果的交集,前提是两个查询的列的数量和数据类型必须完全相同。

SELECT CODE FROM EMPLOYEE WHERE GENDER = 'M'

INTERSECT

SELECT CODE FROM SALARY WHERE SALARY > 2500

第一条SQL的结果为

CODE

----------

001

002

第二条SQL的结果为

CODE

----------

001

003

INTERSECT的结果

CODE

----------

001

方法2:利用关系SQL

SELECT A.CODE FROM EMPLOYEE A, SALARY B

WHERE A.CODE = B.CODE AND A.GENDER = 'M' AND B.SALARY > 2500

结果为

CODE

----------

001

以上两种方法是本人比较常用的方法,尤其第二种,充分体现关系数据的精髓所在。但如果两个表结构比较复杂,而且关系条件也比较难实现的话,第一种显然能够简单地得到需要的结果,也不失为一种好方法。

差异集合: minus

并集,并排除重复记录:union

并集,并包含重复记录:union all
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: