深入理解SQL JOIN:INNER、LEFT、RIGHT與FULL JOIN詳解
SQL JOIN是資料檢索中的核心操作,允許我們基於公用欄位組合多個表中的行。在MySQL中,有多種JOIN類型可供選擇,每種類型都提供了一種特定方式來處理匹配和不匹配的行。
不同SQL JOIN類型的差異
INNER JOIN
LEFT JOIN
RIGHT JOIN
FULL JOIN
實際案例
考慮以下範例表:
<code>表A: | id | firstName | lastName | |---|---|---| | 1 | Arun | Prasanth | | 2 | Ann | Antony | | 3 | Sruthy | Abc | | 6 | New | Abc | 表B: | id2 | age | place | |---|---|---| | 1 | 24 | Kerala | | 2 | 24 | Usa | | 3 | 25 | Ekm | | 5 | 24 | Chennai |</code>
INNER JOIN:
<code>SELECT * FROM 表A INNER JOIN 表B ON 表A.id = 表B.id2;</code>
結果:
firstName | lastName | age | place |
---|---|---|---|
Arun | Prasanth | 24 | Kerala |
Ann | Antony | 24 | Usa |
Sruthy | Abc | 25 | Ekm |
LEFT JOIN:
<code>SELECT * FROM 表A LEFT JOIN 表B ON 表A.id = 表B.id2;</code>
結果:
firstName | lastName | age | place |
---|---|---|---|
Arun | Prasanth | 24 | Kerala |
Ann | Antony | 24 | Usa |
Sruthy | Abc | 25 | Ekm |
New | Abc | NULL | NULL |
RIGHT JOIN:
<code>SELECT * FROM 表A RIGHT JOIN 表B ON 表A.id = 表B.id2;</code>
結果:
firstName | lastName | age | place |
---|---|---|---|
Arun | Prasanth | 24 | Kerala |
Ann | Antony | 24 | Usa |
Sruthy | Abc | 25 | Ekm |
NULL | NULL | 24 | Chennai |
FULL JOIN:
<code>表A: | id | firstName | lastName | |---|---|---| | 1 | Arun | Prasanth | | 2 | Ann | Antony | | 3 | Sruthy | Abc | | 6 | New | Abc | 表B: | id2 | age | place | |---|---|---| | 1 | 24 | Kerala | | 2 | 24 | Usa | | 3 | 25 | Ekm | | 5 | 24 | Chennai |</code>
結果:
firstName | lastName | age | place |
---|---|---|---|
Arun | Prasanth | 24 | Kerala |
Ann | Antony | 24 | Usa |
Sruthy | Abc | 25 | Ekm |
New | Abc | NULL | NULL |
NULL | NULL | 24 | Chennai |
以上是SQL 中的 INNER、LEFT、RIGHT 和 FULL JOIN 有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!