主要是爲了查詢在一個表中出現,而不在另外一個表中出現的數據,具體來講:html
以下圖所示, 有A、B兩個表,其中B表的Aid字段參照A表的主鍵id,爲了查詢在A表中出現,卻沒有被B表引用的數據;數據庫
限定條件:A和B中is_deleted字段爲‘n’ 而且B中type爲‘common’。url
使用not in能夠方便實現,具體爲:spa
select
p.id, p.is_deleted, q.id fromA as p left join B as q onq.is_deleted = 'n' and q.type = 'common' wherep.is_deleted = 'n' and q.id is null
其中on主要是對B表進行限定,不會對A表進行限定,即便將p.is_deleted = 'n' 寫在on以後也沒有做用;code
where是對造成的虛擬表進行再次限定,能夠將對A表的查詢條件設定在這裏,具體結果以下:htm
固然還能夠使用其餘方法,好比not in 等,能夠參考:blog
(1) (數據庫篇) SQL查詢~ 存在一個表而不在另外一個表中的數據