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

2016-02-19 17:22 23 1 收藏

每个人都希望每天都是开心的,不要因为一些琐事扰乱了心情还,闲暇的时间怎么打发,关注图老师可以让你学习更多的好东西,下面为大家推荐Oracle中对两个数据表交集的查询,赶紧看过来吧!

【 tulaoshi.com - 编程语言 】

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

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

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

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

  举例说明:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  表A的数据结构:

中文名称字段名类型长度 学号 codeC 4 姓名 nameC 8

  表B的数据结构:

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

  表A的数据为:

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

  表B的数据为:

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

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

  

SQLselect code, name from Aintersectselect student_code,student_name from B;  

  图1使用intersect操作符查询的结果

  第二种方法: in子句

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

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

  

SQLselect code,name from Awhere A.code in(select student_code from B)and A.name in(select student_name from B)order by A.code;

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  查询结果如图2所示。

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

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

来源:http://www.tulaoshi.com/n/20160219/1615036.html

延伸阅读
你可能运行的是Oracle 10g Release 2数据库服务器,但是需要支持某些应用程序可能是很早之前写好的。在Oracle 8i之前的版本创建的数据表常用LONG数据类型来存储大型文本。 随着Large Object(LOB)数据类型的引入,LONG和LONG RAW数据类型就被抛弃了。如果你要复制使用了LONG数据类型的数据表,那么使用CREATE TABLE AS SELECT语法将不能完成...
在Oracle数据库中删除两表中相同数据的方法是用到in语句,本文通过实例来讲解删除两表中相同数据的方法。 软件环境: 1、Windows NT4.0+ORACLE 8.0.4。 2、Oracle安装路径为:C:\ORANT。 问题提出: 1、在做数据转储业务的时候,如果发生操作错误,有可能出现主表和副表中都有同一种数据, 这样结算的结果就有可能发生错误。 实...
MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库里,由mysql_install_db脚本初始化。这些权限表分别user,db,table_priv,columns_priv和host。下面分别介绍一下这些表的结构和内容: user权限表:记录允许连接到服务器的用户帐号信息,里面的权限是全局级的。 db权限表:记录各个帐号在各个数据库上...
(1)如图7.19所示。 (2)出现如图7.20所示的编辑表的选项卡。 (3)其他选项卡的操作比较简单,这里不再赘述。
通常情况下,一个我们在做一个产品的时候,一开始可能由于设计考虑不周或者程序写的不够严谨,某个字段上的值产生重复了,但是又必须去掉,这个时候就稍微麻烦了一点,直接加一个UNIQUE KEY肯定是不行了,因为会报错。 现在,我们来采用一种变通的办法,不过可能会丢失一些数据 :) 在这里,我们设定一个表,其结构如下: mysql ...

经验教程

535

收藏

87
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部