Oracle中对两个数据表交集的查询

原创 2004年08月31日 22:45:00
  Oracle关系型数据库管理系统是世界上流行的关系数据库,它是一个极其强大、灵活和复杂的系统,据说,在使用oracle时应有这样的思想,那就是在SQL中几乎可以实现任何一种想法。

  下面向大家介绍使用SQL查两个Oracle数据表查询的相同数据的方法,笔者感到这两种方法执行效率高、使用方便。

  第一种方法:利用操作符intersect

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

  举例说明:

  表A的数据结构:

中文名称 字段名 类型 长度
学号 code C 4
姓名 name C 8

  表B的数据结构:

中文名称 字段名 类型 长度
学号 Student_code C 4
姓名 Student_name C 8
分数 score N 3


  表A的数据为:

  ('1101 ','韩甲'),('1102 ','丁乙')

  表B的数据为:

  ('1101 ','韩甲',99),('1102 ','丁乙',89),('1103 ','徐静',94)

  在oracle中运行以下查询,图1显示了这个查询的结果:

SQL>select code, name from A
intersect
select student_code,student_name from B;

jt-2001-10-16-image001.jpg
    图1使用intersect操作符查询的结果

  第二种方法: in子句

  in子句可以在子查询中为where子句计算所得的值创建一个列表。这种方法与前一种方法有所不同的是,前一种方法比较多列但只使用一个intersect就行了,而一个in子句用来比较两个子查询的一列,比较几列就要使用几个in子句。下面举例说明如何取得两个查询的交集。

  仍以A和B两张数据表为例,在oracle中运行以下查询,图2显示了这个查询的结果:

SQL>select code,name from A
where A.code in
(select student_code from B)
and A.name in
(select student_name from B)
order by A.code;

  查询结果如图2所示。

jt-2001-10-16-image002.jpg
      图2使用in子句查询的结果

  以上为笔者使用oracle7.3的体会,如有不当之处,请不吝赐教。


Oracle中比对2张表之间数据是否一致的几种方法

转自:http://www.askmaclean.com/archives/oracle-compare-data-between-tables-method.html
  • jinzhilong580231
  • jinzhilong580231
  • 2014年06月10日 11:33
  • 16181

Oracle用存储过程查询多张表的方法

前用企业库读SQL Server返回数据集没任何问题,可以返回1个也可以返回多个,读Oracle的时候返回一个数据集的时候也没问题,可是最近在用Oracle返回多个数据集的时候却出了问题,几经辗转,终...
  • jumtre
  • jumtre
  • 2014年09月28日 13:48
  • 6170

Oracle中对两个数据表交集的查询(intersect和in)

Oracle关系型数据库管理系统是世界上流行的关系数据库,它是一个极其强大、灵活和复杂的系统,据说,在使用oracle时应有这样的思想,那就是在SQL中几乎可以实现任何一种想法。   下面向大家介绍...
  • u010078133
  • u010078133
  • 2015年03月11日 11:34
  • 1778

Oracle中对两个数据表交集的查询(intersect和in)

Oracle关系型数据库管理系统是世界上流行的关系数据库,它是一个极其强大、灵活和复杂的系统,据说,在使用oracle时应有这样的思想,那就是在SQL中几乎可以实现任何一种想法。   下面向大家介绍...
  • u010078133
  • u010078133
  • 2015年03月11日 11:34
  • 1778

oracle异库同表名的两个数据库中数据合并或数据表结构的修改

  • 2017年03月01日 11:07
  • 403B
  • 下载

Oracle中通过Job实现定时同步两个数据表之间的数据

摘要:之前项目中用的触发器来实现数据解析,但是最近客户反应,
  • sxdtzhaoxinguo
  • sxdtzhaoxinguo
  • 2014年11月12日 11:23
  • 10545

Oracle数据表与查询

  • 2011年03月27日 18:33
  • 1KB
  • 下载

Oracle查询数据表数据很少却很慢

Oracle查询数据表数据很少却很慢(查询空表很很耗时) 有一个表的数据我要去看一下到底数据是什么样子的,所以我就 select * from tableName 这个表。但是执行了90多秒后,没...
  • sysmedia
  • sysmedia
  • 2017年02月09日 15:09
  • 243

ORACLE递归查询(适用于ID,PARENTID结构数据表)

转载:Oracle 树操作(select…start with…connect by…prior) oracle树查询的最重要的就是select…start with…connect b...
  • lishengf
  • lishengf
  • 2017年07月12日 09:40
  • 273

oracle表空间查询维护命令大全之一(数据表空间)史上最全

oracle表空间相关维护命令汇总,包含数据库表空间的查询,创建,移动,删除等操作,包含所有,史上最全,希望对大家有所帮助。...
  • lihaiwenshu
  • lihaiwenshu
  • 2014年10月22日 15:33
  • 888
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle中对两个数据表交集的查询
举报原因:
原因补充:

(最多只允许输入30个字)