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

转载 2004年09月07日 14:38: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;


    图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所示。


      图2使用in子句查询的结果

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

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

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

ORACLE 中的union(去重并集),union all(不去重并集),intersect(交集),minus(减集)

集合操作有 并,交,差 3种运算。    union :得到两个查询结果的并集,并且自动去掉重复行。不会排序   union all:得到两个查询结果的并集,不会去掉重复行。也不会排序  ...
  • muban_007
  • muban_007
  • 2015年10月20日 10:59
  • 2877

SQL操作结果集-并集,差集,交集,结果集排序

算法大数据qq交流群:397173819 经常需要对一些结果集进行诸如求并集,交集等操作。在网上看到一些不错的资料,特意转载过来。为了配合测试,特地建了两个表,并且添加了一些测试数据,其中重复记录为...
  • bitcarmanlee
  • bitcarmanlee
  • 2016年06月20日 18:50
  • 2569

array_intersect两个数组交集PHP函…

array_intersect -- 计算数组的交集说明 array array_intersect ( array array1, array array2 [, array ...]) arra...
  • rongwenbin
  • rongwenbin
  • 2013年08月09日 17:35
  • 484

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

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

ORACLE 中的union(去重并集),union all(不去重并集),intersect(交集),minus(减集)

集合操作有 并,交,差 3种运算。     1、union :得到两个查询结果的并集,并且自动去掉重复行。不会排序   2、union all:得到两个查询结果的并集,不会...
  • hong10086
  • hong10086
  • 2017年07月30日 13:08
  • 225

oracle笔记之交集(INTERSECT)、并集(UNION UNION ALL )、差集(MINUS)

前言:学习oracle差不多有一年了,但是老长时间不用,基本上已经把学的东西全部还给老师了。正好这几天做的项目是使用oracle数据库,趁这个机会好好的复习一把。下面复习的是oracle的交集,并集,...
  • xinghuo0007
  • xinghuo0007
  • 2017年06月13日 11:57
  • 603

常用SQL查询语句 Oracle中Union,Union All,Intersect,Minus的有什么区别

 -- Union 是当存在重复记录行时,只取一行(也就是说重复记录行只显示一条),同时进行默认规则的排序; -- Union all 是不管你有没有重复,都显示出来,不进行排序; --...
  • kunkun378263
  • kunkun378263
  • 2015年10月13日 16:01
  • 644

ORACLE中Union,Intersect和Minus的等价连接查询SQL写法

有一天,在处理集合的查询SQL的时候,突发奇想,其实集合的操作
  • gary16
  • gary16
  • 2014年10月31日 12:00
  • 1155

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

摘要:之前项目中用的触发器来实现数据解析,但是最近客户反应,
  • sxdtzhaoxinguo
  • sxdtzhaoxinguo
  • 2014年11月12日 11:23
  • 10578
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle中对两个数据表交集的查询(intersect和in)
举报原因:
原因补充:

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