首頁 >資料庫 >mysql教程 >SQL 中的 INNER、LEFT、RIGHT 和 FULL JOIN 有何不同?

SQL 中的 INNER、LEFT、RIGHT 和 FULL JOIN 有何不同?

Linda Hamilton
Linda Hamilton原創
2025-01-25 15:07:09696瀏覽

How Do INNER, LEFT, RIGHT, and FULL JOINs Differ in SQL?

深入理解SQL JOIN:INNER、LEFT、RIGHT與FULL JOIN詳解

SQL JOIN是資料檢索中的核心操作,允許我們基於公用欄位組合多個表中的行。在MySQL中,有多種JOIN類型可供選擇,每種類型都提供了一種特定方式來處理匹配和不匹配的行。

不同SQL JOIN類型的差異

INNER JOIN

  • 基於匹配條件連接兩個表。
  • 只傳回公用欄位在兩個表中都符合的行。

LEFT JOIN

  • 基於匹配條件連接兩個表。
  • 傳回左側表的所有行,即使右側表中沒有相符的行。
  • 右側表中不匹配的行以NULL值填入。

RIGHT JOIN

  • 與LEFT JOIN類似,但傳回右側表的所有行,即使左側表中沒有相符的行。
  • 左側表中不匹配的行以NULL值填入。

FULL JOIN

  • 組合LEFT和RIGHT OUTER JOIN的結果。
  • 傳回兩個表的所有行,不論是否有符合。
  • 任何一個表中不匹配的行都會用NULL值填入。

實際案例

考慮以下範例表:

<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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn