SQL的三種連接方式分為:左外連接、右外連接、內連接,專業術語分別為:LEFT JOIN、RIGHT JOING、INNER JOIN
內連接INNER JOIN:使用比較運算符來根據指定的連接的每個表都有的列的值來進行匹配連接,如果對應的列值不存在,則連接的所有表對應的該列值都不會進行連接,也就是說都會別拋棄;
##### 舉個例子
------------------------------------------------- a表 id name b表 id job parent_id 1 張3 1 23 1 2 李四 2 34 2 3 王武 3 34 4 a.id同parent_id 存在關系
//進行INNER JOIN
SELECT * FROM (a INNER JOIN b ON a.id=b.parent_id);
最終輸出的結果為:
a.id a.name b.id b.job b.parent_id
1 張三 1 23 1
2 李四 2 34 2
//因為a.id=3在b中不存在對應的值,b.parent_id=4再a中也不存在,因此都被拋棄
左外連接LEFT JOIN/LEFT OUTTER JOIN:如果左表的某行在右表中沒有找到對應的匹配項,那么左表該行在連接表中對應的右表數據都為null;而右表中的某行在坐標中沒有找到對應的匹配項,就被拋棄
舉個例子
-------------------------------------------------
a表 id name b表 id job parent_id
1 張3 1 23 1
2 李四 2 34 2
3 王武 3 34 4
a.id同parent_id 存在關系
--------------------------------------------------
//進行LEFT JOIN
SELECT * FROM (a LEFT JOIN b ON a.id=b.parent_id);
最終輸出的結果為:
a.id a.name b.id b.job b.parent_id
1 張三 1 23 1
2 李四 2 34 2
3 王五 null null null
//因為a.id=3在b中不存在對應的值,所以對於左外連接來說該行對應的右表中的數據的值都為null
##### 右外連接RIGHT JOIN/RIGHT OUTTER JOIN: 與左外連接類似,只不過是右表對應的數據在左表中沒有找到匹配項,該行對應的左表數據就被設置為null,左表對應的數據在右表中沒有找到匹配項,就被拋棄,例子就不列舉了
##### 文章摘自:http://www.blogjava.net/zolly/archive/2007/10/23/SQLJION.html
</div>