首頁 > 資料庫 > mysql教程 > MySQL內部,左,右和完整連接有何不同?

MySQL內部,左,右和完整連接有何不同?

Patricia Arquette
發布: 2025-01-25 15:12:11
原創
317 人瀏覽過

How Do INNER, LEFT, RIGHT, and FULL Joins Differ in MySQL?

深入理解MySQL JOIN類型的差異

MySQL 的 JOIN 子句可讓您透過符合公用欄位值來組合多個資料表中的資料。根據用例的不同,可以使用多種 JOIN 類型:

INNER JOIN(內連接)

INNER JOIN 僅當兩個表中都存在匹配項時才返回行。它執行集合交集運算,檢索屬於兩個表的記錄。

LEFT JOIN(左連接)

LEFT JOIN 傳回左表中的所有行,而不管右表中是否有符合項目。它使用 NULL 值填充右表中缺少的匹配項。

RIGHT JOIN(右邊連接)

RIGHT JOIN 與 LEFT JOIN 類似,但它會傳回右表中的所有行,而不是左表中的所有行。同樣,NULL 值用於表示左表中缺少的匹配項。

FULL JOIN(全連接)

FULL JOIN 組合 LEFT 和 RIGHT 外連接的結果,傳回兩個表中的所有行。任何來自任一表的不匹配行都會填入 NULL 值。

範例

考慮兩個表,TableATableB,它們包含以下資料:

<code>**TableA**
| id | firstName | lastName |
|---|---|---|
| 1 | arun | prasanth |
| 2 | ann | antony |
| 3 | sruthy | abc |

**TableB**
| id2 | age | Place |
|---|---|---|
| 1 | 24 | kerala |
| 2 | 24 | usa |
| 3 | 25 | ekm |
| 5 | 24 | chennai |</code>
登入後複製

INNER JOIN 範例

<code class="language-sql">SELECT *
FROM TableA
INNER JOIN TableB
ON TableA.id = TableB.id2;</code>
登入後複製

結果:

firstName lastName age Place
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm

LEFT JOIN 範例

<code class="language-sql">SELECT *
FROM TableA
LEFT JOIN TableB
ON TableA.id = TableB.id2;</code>
登入後複製

結果:

firstName lastName age Place
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm

RIGHT JOIN 範例

<code class="language-sql">SELECT *
FROM TableA
RIGHT JOIN TableB
ON TableA.id = TableB.id2;</code>
登入後複製

結果:

firstName lastName age Place
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
NULL NULL 24 chennai

FULL JOIN 範例 (MySQL不支援直接的FULL JOIN,需要使用UNION進行模擬)

MySQL 不直接支援 FULL JOIN,需要使用 LEFT JOINRIGHT JOIN 並結合 UNION 來模擬 FULL JOIN 的效果。

透過上述範例,可以清楚看出不同 JOIN 類型在資料合併上的差異。選擇合適的 JOIN 類型對於有效地取得所需資料至關重要。

以上是MySQL內部,左,右和完整連接有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板