更多內容
到目前為止已經介紹了以各種可能的方式聯接或合並數據集但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
數據倉庫與數據挖掘培訓視頻教程
From:http://tw.wingwit.com/Article/program/SQL/201311/16455.html