更多内容
到目前为止已经介绍了以各种可能的方式联接或合并数据集但SQL中实现了集合理论并提供了其他一些处理数据集的技巧INTERSECT和EXCEPTSQL标准和绝对多数RDBMS都支持这两种操作符
INTERSECT操作符
INTERSECT操作符用于对两个查询的结果求取交集即仅包含那些由第一个查询产生并且在第二个查询中具有匹配项的记录读者可能已经注意到INTERSECT操作符与第章和第章中介绍过的子查询和EXISTS操作符具有相似性这完全正确它们在很多方面都是相同的
例如要查找在书柜中已经分配了位置的图书可以运行下面的查询
SELECT bk_id FROM books
INTERSECT
SELECT fk_bk_loc FROM location;
bk_id
( row(s) affected)
结果是条记录BOOKS表中所包含记录的准确数量所有图书都在书柜上被分配了位置如果在BOOKS表中插入一条新的图书记录而在LOCATION表中并没有创建对应的一条记录则新图书记录的BK_ID将不会出现在查询返回的列表中(实际上这一小节末尾将对此进行演示)
使用INTERSECT操作符的原因在于代码的可维护性与使用子查询的方式相比使用INTERSECT操作符的意图更加清晰据笔者所知RDBMS在后台可能会以完全相同的方式来处理它们
返回目录SQL实战新手入门
编辑推荐
Oracle索引技术
高性能MySQL
数据仓库与数据挖掘培训视频教程