Oracle数据库中对两个数据表交集的查询[组图]_Oracle数据库_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

Oracle中对两个数据表交集的查询[组图]

作者:黑客防线网安Oracle维护基地 来源:黑客防线网安Oracle维护基地 浏览次数:0

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

  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的体会,如有不当之处,请不吝赐教。

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-12380-1.html
网站维护教程更新时间:2012-03-23 00:39:47  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer