intersect的用法簡介
在Oracle中,“A minus B”用於將結果集B中含有的記錄從結果集A中移除,即用於獲取存在於結果集A中而不存在於結果集B中的記錄;“A union B”和“A union all B”用於獲取結果集A和結果集B的並集,其中前者將只保留重複記錄中的一條,而後者將保留所有的記錄;“A intersect B”用於獲取結果集A和結果集B共有的記錄,即它們的交集。在本文中將簡要的介紹一下intersect的用法。
intersect和minus、union一樣,它們都需要結果集A和結果集B擁有相同的結構,即它們的列數要一致,且每列的數據類型也需要一致,否則沒法進行比較。
下面來看一個使用intersect的示例,假設我們有如下這樣一張表t_interest和數據,其中記錄了每一個人的興趣愛好。
id |
name |
interest |
1 |
zhangsan |
basketball |
2 |
zhangsan |
football |
3 |
zhangsan |
baseball |
4 |
zhangsan |
swimming |
5 |
zhangsan |
music |
6 |
zhangsan |
movie |
7 |
lisi |
basketball |
8 |
lisi |
football |
9 |
lisi |
game |
10 |
lisi |
movie |
假設現在我們需要找出zhangsan和lisi共同擁有的興趣愛好,如果使用Oracle的intersect來實現,那麼我們的SQL可以這樣來寫:
select interest from t_interest where name='zhangsan' intersect select interest from t_interest where name='lisi';
很顯然,查詢出來的結果會是如下這樣:
interest |
basketball |
football |
movie |