IN可能存在的效能疑慮(效能差),可以使用EXISTS取代。
範例一
1
2
3
--取得負責人ID不是1、2、3的負責人姓名
select [負責人姓名] from [負責人清單]
where [負責人ID] not in (1,2,3)
執行結果
1
2
3
4
5
6
7
負責人姓名
藤本
小林
伊藤
佐瀨
宇賀神
岡田
Where Not
Not In與下面 where not敘述方式相同:
1
2
select [負責人姓名] from [負責人清單]
where not ([負責人ID] = 1 or[負責人ID]= 2 or [負責人ID]= 3)
範例二
取得包含於負責人清單,但不包含分店負責人清單中的負責人的總販賣業績(販賣單價*數量)。(差集,可以使用Except)
1
2
3
4
5
6
--取得包含於負責人清單,但不包含分店負責人清單中的負責人的總販賣業績(販賣單價*數量)
select sum(B.販賣單價 * A.數量) "總業績"
from [販賣資料] A
join [商品清單] B on B.商品ID = A.商品ID
where A.負責人ID in (select 負責人ID from [負責人清單]) --包含於負責人清單
and A.負責人ID not in (select [分店負責人ID] from [分店負責人清單]) --不包含分店負責人清單