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;

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中对两个数据表交集的查询(intersect和in)

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

INTERSECT 两个单独的sql取交集

UNION 指令类似,INTERSECT 也是对两个 SQL 语句所产生的结果做处理的。不同的地方是, UNION 基本上是一个 OR (如果这个值存在于第一句或是第二句,它就会被选出),而 INTE...
  • younghaiqing
  • younghaiqing
  • 2016年12月15日 15:59
  • 905

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

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

MySQL中使用INNER JOIN来实现Intersect交集操作

MySQL中使用INNER JOIN来实现Intersect交集操作
  • alanzyy
  • alanzyy
  • 2014年06月17日 17:40
  • 8508

Oracle Database之集合操作函数(UNION, INTERSECT, MINUS)

Oracle Database之集合操作属于SELECT的高级用法,集合操作包含并、交、差三种,为了合并多个SELECT语句的结果,可以使用的集合操作符: UNION, UNION ALL, INTE...
  • jssg_tzw
  • jssg_tzw
  • 2016年12月08日 19:19
  • 1130

oracle中sql语句中多个查询结果的交集、差集和并集

1.交集 intersect运算:返回查询结果中相同的部分。 SELECT product_id FROM tab1 INTERSECT SELECT product...
  • u012255097
  • u012255097
  • 2016年12月27日 17:11
  • 9832

lambda Intersect two list in C#

List data1 = new List {1,2,3,4,5}; List data2 = new List{"6","3"}; var newData = data1.Select(i => ...
  • lglgsy456
  • lglgsy456
  • 2014年11月11日 10:48
  • 578

Oracle集合操作函数:union、intersect、minus

集合操作符专门用于合并多条select 语句的结果,包括:UNION, UNION ALL, INTERSECT, MINUS。当使用集合操作符时,必须确保不同查询的列个数和数据类型匹配。     ...
  • mengtianyalll
  • mengtianyalll
  • 2014年02月22日 21:46
  • 2255

List之Union(),Intersect(),Except() 即并集,交集,差集运算。

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T...
  • smartsmile2012
  • smartsmile2012
  • 2016年11月28日 20:19
  • 1232

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

        Oracle关系型数据库管理系统是世界上流行的关系数据库,它是一个极其强大、灵活和复杂的系统,据说,在使用oracle时应有这样的思想,那就是在SQL中几乎可以实现任何一种想法。  下...
  • wxx66666
  • wxx66666
  • 2005年03月18日 08:41
  • 573
收藏助手
不良信息举报
您举报文章:Oracle中对两个数据表交集的查询(intersect和in)
举报原因:
原因补充:

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