Oracle查询取交集的实现方法(oracle取交集)

Oracle数据库作为当今市场上最流行的关系数据库,提供多种SQL查询语句,可以用于快速优雅的查询数据。查询是在 SQL中使用最多的操作,大多数时候要求从多个表中查询满足条件的数据,一般可以使用SQL分组查询操作。

取交集即从两个集合中取出相同的数据,一般在SQL中可以通过SQL内置函数intersect来实现,它可以同时从两个或多个表(subquery)中取出相同行记录,根据不同的查询条件–它会使用另一个subquery中出现的列来检查每行,如果一样就会将该行记录取出。

例如:

我们有一个student表(学号,学生姓名,年龄),该表数据如下:

学号 | 学生姓名 | 年龄

—-|———-|—–

1 | 张三 | 15

2 | 李四 | 16

3 | 王五 | 18

另一个表people(学号,学生姓名),数据如下:

学号 | 学生姓名

—-|———-

1 | 张三

2 | 李四

3 | 马六

从上述两个表得到表内有相同学号且相同学生姓名的记录,这种需求可以使用Oracle的取交集语句的实现:

“`SQL

SELECT student.student_name

FROM student

INTERSECT

SELECT people.student_name

FROM people


此时,结果集里只有两个记录:张三,李四。

另外,intersect也支持多个subquery,而且可以添加查询条件:

```SQL
SELECT student.student_name
FROM student
WHERE student.age > 16
INTERSECT
SELECT people.student_name
FROM people
WHERE people.student_name like '%六%'

此时,结果集只有一个记录:马六。

以上就是查询取交集的实现方法,Oracle提供了intersect函数,便捷方便,可以快速筛选出用户指定的记录.通过这一方式,可以极大地提高SQL查询效率,减少重复工作。


数据运维技术 » Oracle查询取交集的实现方法(oracle取交集)