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,而且可以添加查询条件:
```SQLSELECT student.student_name
FROM studentWHERE student.age > 16
INTERSECT SELECT people.student_name
FROM peopleWHERE people.student_name like '%六%'
此时,结果集只有一个记录:马六。
以上就是查询取交集的实现方法,Oracle提供了intersect函数,便捷方便,可以快速筛选出用户指定的记录.通过这一方式,可以极大地提高SQL查询效率,减少重复工作。