ホームページ >データベース >mysql チュートリアル >MySQL JOIN と LEFT JOIN の主な違いは何ですか?

MySQL JOIN と LEFT JOIN の主な違いは何ですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-16 13:05:03462ブラウズ

What's the Key Difference Between MySQL JOIN and LEFT JOIN?

MySQL JOIN と LEFT JOIN の違いを理解する

MySQL JOIN は、共通のコラム。デフォルトでは、MySQL は INNER JOIN を実行し、結合されたすべてのテーブルで一致する行のみを返します。

しかし、ユーザーが明示的な結合タイプがないことが LEFT JOIN を意味すると考えると、よくある誤解が生じます。これは当てはまりません。デフォルトの結合タイプは INNER JOIN のままです。

LEFT JOIN と INNER JOIN の例

次のクエリを考えてみましょう。

SELECT
    `DM_Server`.`Jobs`.*,
    `DM_Server`.servers.Description AS server,
    digital_inventory.params,
    products.products_id,
    products.products_pdfupload,
    customers.customers_firstname,
    customers.customers_lastname
FROM `DM_Server`.`Jobs`
    INNER JOIN `DM_Server`.servers ON servers.ServerID = Jobs.Jobs_ServerID
    JOIN `cpod_live`.`digital_inventory` ON digital_inventory.jobname = Jobs.Jobs_Name
    JOIN `cpod_live`.`products` ON products.products_pdfupload = CONCAT(digital_inventory.jobname, ".pdf")
    JOIN `cpod_live`.`customers` ON customers.customers_id = products.cID
ORDER BY `DM_Server`.`Jobs`.Jobs_StartTime DESC LIMIT 50

このクエリは実行されます。すべてのテーブルに対して INNER JOIN を実行し、結合されたすべてのテーブルで一致する値を持つ行のみを返します。

次に、LEFT JOIN を使用するようにクエリを変更しましょう。

SELECT
    `DM_Server`.`Jobs`.*,
    `DM_Server`.servers.Description AS server,
    digital_inventory.params,
    products.products_id,
    products.products_pdfupload,
    customers.customers_firstname,
    customers.customers_lastname
FROM `DM_Server`.`Jobs`
    LEFT JOIN `DM_Server`.servers ON servers.ServerID = Jobs.Jobs_ServerID
    LEFT JOIN `cpod_live`.`digital_inventory` ON digital_inventory.jobname = Jobs.Jobs_Name
    LEFT JOIN `cpod_live`.`products` ON products.products_pdfupload = CONCAT(digital_inventory.jobname, ".pdf")
    LEFT JOIN `cpod_live`.`customers` ON customers.customers_id = products.cID
ORDER BY `DM_Server`.`Jobs`.Jobs_StartTime DESC LIMIT 50

The LEFTこのクエリの JOIN は、左側のテーブル (「ジョブ」) からすべての行を返し、右側のテーブルからは一致する行のみを返します。これは、右側のテーブルに一致する行がない場合でも、「ジョブ」の行が結果に含まれることを意味します。

結合の視覚的表現

以下は INNER JOIN と LEFT JOIN の視覚的表現です:

INNER JOIN:

              TABLE 1               TABLE 2
+-----------+------+  +-----------+------+
| Column 1  | KEY  |  | Column 3  | KEY  |
+-----------+------+  +-----------+------+
| ROW 1.1   | 1    |  | ROW 2.1   | 1    |
| ROW 1.2   | 2    |  |           |      |
|           |      |  | ROW 2.2   | 2    |
+-----------+------+  +-----------+------+

Result:
| Column 1 | Column 3 |
+-----------+-----------+
| ROW 1.1   | ROW 2.1   |
| ROW 1.2   | ROW 2.2   |

LEFT JOIN:

              TABLE 1               TABLE 2
+-----------+------+  +-----------+------+
| Column 1  | KEY  |  | Column 3  | KEY  |
+-----------+------+  +-----------+------+
| ROW 1.1   | 1    |  | ROW 2.1   | 1    |
| ROW 1.2   | 2    |  |           |      |
| ROW 1.3   | 3    |  |           |      |
+-----------+------+  +-----------+------+

Result:
| Column 1 | Column 3 |
+-----------+-----------+
| ROW 1.1   | ROW 2.1   |
| ROW 1.2   | NULL      |
| ROW 1.3   | NULL      |

以上がMySQL JOIN と LEFT JOIN の主な違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。