sql 查詢 – left join on

  1. 問題引入

 

主要是爲了查詢在一個表中出現,而不在另外一個表中出現的數據,具體來講:html

以下圖所示, 有A、B兩個表,其中B表的Aid字段參照A表的主鍵id,爲了查詢在A表中出現,卻沒有被B表引用的數據;數據庫

限定條件:A和B中is_deleted字段爲‘n’  而且B中type爲‘common’。url

image

  2. 解決方法

 

2.1 left join on

使用not in能夠方便實現,具體爲:spa

select
    p.id, p.is_deleted, q.id
from 
    A as p left join B as q
on 
    q.is_deleted = 'n' and q.type = 'common'
where 
    p.is_deleted = 'n' and q.id is null

 

其中on主要是對B表進行限定,不會對A表進行限定,即便將p.is_deleted = 'n' 寫在on以後也沒有做用;code

where是對造成的虛擬表進行再次限定,能夠將對A表的查詢條件設定在這裏,具體結果以下:htm

繪圖2

 

2.2 其餘方法

固然還能夠使用其餘方法,好比not in 等,能夠參考:blog

(1)  (數據庫篇) SQL查詢~ 存在一個表而不在另外一個表中的數據

(2) http://wenku.baidu.com/link?url=-PcZNiGgonRT324jVS45HO-6yWx47MeAJiMnrFxgZ-Orsx4_jmBiT2LL1F1DYYjFGMcdd4hS6Q58SuhTDX6f6p0BOsUIL9M9omiwx1WHSZqget

相關文章
相關標籤/搜索