MySQL における JOIN と LEFT JOIN の違いを理解する
SQL では、テーブルを結合することで、特定のデータに基づいて複数のテーブルのデータを結合できます。基準。結合には JOIN と LEFT JOIN の 2 つの一般的なタイプがあります。
JOIN と LEFT JOIN
JOIN は結合条件に一致する行のみを返し、基本的にレコードのサブセットを作成します。指定された基準を満たすもの。一方、LEFT JOIN は、左側のテーブルからすべての行を取得し、右側のテーブルに一致する行のみを取得します。右側のテーブルに一致しない行は NULL 値で返されます。
MySQL のデフォルトの結合タイプ
ユーザーの想定に反して、MySQL のデフォルトの結合タイプは 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` 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 を使用します。これは、4 つの結合テーブルすべてに対応するエントリを持つジョブのみを返します。 LEFT JOIN に変換するには、次のように 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") LIMIT 50
以上がMySQL の JOIN と LEFT JOIN の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。