如何查询Oracle对两个数据表的交集
来源:爱站网时间:2020-11-26编辑:网友分享
Oracle数据库管理系统是最流行的关系数据库,但是有很多用户们在使用的时候不知道如何查询Oracle对两个数据表的交集,那么接下来我们就一起去看看吧。
Oracle数据库管理系统是最流行的关系数据库,但是有很多用户们在使用的时候不知道如何查询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; |
以上就是小编介绍如何查询Oracle对两个数据表的交集的内容,只要你了解了它们,发动我们的思维和想象,就可以熟练的运用它们、展现它们独特魅力的一面。
上一篇:如何解决oracle分页问题