左外連接與where語句的區別

例:

表A:user_info;

字段:user_nametitle_id

孫悟空  1

豬八戒  2

唐三藏  3

沙悟淨  4

表B:user_title;

字段:title_id,title_name;

1 打手

2 食客

3 聖人


想獲得每個人物的名稱與職業

select ui.user_name,ut.title_name from user_info ui,user_title ut where ui.title_id = ut.title_id;

查詢出來的結果會是:

user_name title_name

孫悟空 打手

豬八戒 食客

唐三藏 聖人


因爲這條sql語句的過濾條件是ui.title= ut.title_id , 必須全部匹配上纔會將結果查詢出來。

沙悟淨就給漏掉了 , 這樣的話 , 將會導致我們所需要的數據不完成.

解決方法是用左外連接:

通用寫法:

select ui.user_name,ut.title_name from user_info ui left join user_title ut on ui.title_id = ut.title_id;
oracle寫法:

select ui.user_name,ut.title_name from user_info ui,user_title ut where ui.title_id = ut.title_id(+);

查詢出來的結果會是:

user_name title_name

孫悟空 打手

豬八戒 食客

唐三藏 聖人

沙悟淨 (null)


這樣的話,數據就全了,就算沙悟淨暫時沒上班,至少沒把他給漏掉,呵呵。


如果有什麼地方說錯了,請指正。謝謝!

發佈了19 篇原創文章 · 獲贊 4 · 訪問量 35萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章