例:
表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)這樣的話,數據就全了,就算沙悟淨暫時沒上班,至少沒把他給漏掉,呵呵。
如果有什麼地方說錯了,請指正。謝謝!