当前位置:主页 > 行业知识 >

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

发布时间:19-12-06 阅读:566

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的体会,如有欠妥之处,请不吝见示。



上一篇:大学变暴力蛮荒 伤害深远
下一篇:没有了