參考自 這裡
前言 :
這邊對數據庫中容易搞混的 Inner/Left/Right/Full join 使用進行簡單介紹. 首先假設我們有兩個 Table :
- Table test1 :

- Table test2:

接著下面的說明會以這兩個Tables 當作範例.
SQL INNER JOIN Keyword :
使用 INNER JOIN table_name ON condition 確保兩個 join 的表格至少有一個欄位會是相同. 例如我們要找出 'test1' 中的欄位 id 有在 'test2' 中的 pid 欄位出現, 並列出 id, name, phone 與country 欄位訊息, 可以如下操作 :

這樣子出現的集合式在 'test1' 與 test2' 中必須是 test1.id 與 test.pid 都存在且相等, 才會回傳.
SQL LEFT JOIN Keyword :
使用 LEFT JOIN table_name ON condition 將只要左邊的表格有的紀錄都輸出到結果集中. 以前一個範例並將 "INNER JOIN" 換成 "LEFT JOIN" 的結果如下 :

可以發現 id=4 的紀錄在 'test1' 中有但是在 'test2' 中沒有對應的 pid, 因此欄位 country 為 NULL.
SQL RIGHT JOIN Keyword :
使用 RIGHT JOIN table_name ON condition 將只要右邊的表格有的紀錄都輸出到結果集中. 以 INNER JOIN 的範例並將 "INNER JOIN" 換成 "RIGHT JOIN" 並新增欄位 "pid" 的結果如下 :

可以發現這次是右邊 'test2' 的紀錄都有在結果集, 但是在 pid=5 的紀錄應為沒有對應的 'test1' 的紀錄 (pid=id=5), 故 id, name, phone 為 NULL.
SQL FULL JOIN Keyword :
至於 FULL JOIN, 它是 LEFT JOIN 與 RIGHT JOIN 的聯集. 但我使用 MySQL當作示範而它沒有支援 FULL JOIN, 故我改用 UNION 來模擬同樣的結果 :

補充說明 :
* w3schools.com : SQL Joins
* w3schools.com : SQL INNER JOIN Keyword
* w3schools.com : SQL LEFT JOIN Keyword
* w3schools.com : SQL FULL JOIN Keyword
前言 :
這邊對數據庫中容易搞混的 Inner/Left/Right/Full join 使用進行簡單介紹. 首先假設我們有兩個 Table :
- Table test1 :
- Table test2:
接著下面的說明會以這兩個Tables 當作範例.
SQL INNER JOIN Keyword :
使用 INNER JOIN table_name ON condition 確保兩個 join 的表格至少有一個欄位會是相同. 例如我們要找出 'test1' 中的欄位 id 有在 'test2' 中的 pid 欄位出現, 並列出 id, name, phone 與country 欄位訊息, 可以如下操作 :
這樣子出現的集合式在 'test1' 與 test2' 中必須是 test1.id 與 test.pid 都存在且相等, 才會回傳.
SQL LEFT JOIN Keyword :
使用 LEFT JOIN table_name ON condition 將只要左邊的表格有的紀錄都輸出到結果集中. 以前一個範例並將 "INNER JOIN" 換成 "LEFT JOIN" 的結果如下 :
可以發現 id=4 的紀錄在 'test1' 中有但是在 'test2' 中沒有對應的 pid, 因此欄位 country 為 NULL.
SQL RIGHT JOIN Keyword :
使用 RIGHT JOIN table_name ON condition 將只要右邊的表格有的紀錄都輸出到結果集中. 以 INNER JOIN 的範例並將 "INNER JOIN" 換成 "RIGHT JOIN" 並新增欄位 "pid" 的結果如下 :
可以發現這次是右邊 'test2' 的紀錄都有在結果集, 但是在 pid=5 的紀錄應為沒有對應的 'test1' 的紀錄 (pid=id=5), 故 id, name, phone 為 NULL.
SQL FULL JOIN Keyword :
至於 FULL JOIN, 它是 LEFT JOIN 與 RIGHT JOIN 的聯集. 但我使用 MySQL當作示範而它沒有支援 FULL JOIN, 故我改用 UNION 來模擬同樣的結果 :
補充說明 :
* w3schools.com : SQL Joins
* w3schools.com : SQL INNER JOIN Keyword
* w3schools.com : SQL LEFT JOIN Keyword
* w3schools.com : SQL FULL JOIN Keyword
This message was edited 25 times. Last update was at 27/08/2012 17:43:43
MySQL数据库备份
回覆刪除php数据库样本