MySQL の JOIN と LEFT JOIN を理解する
MySQL の JOIN 操作を使用すると、テーブル間に共通のカラムを指定することで、複数のテーブルのデータを結合できます。ただし、さまざまな結合タイプ、特に 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
クエリ実行エラーLEFT JOIN
すべての INNER JOIN を変換しようとした場合クエリ内で LEFT JOIN を使用すると、エラーが発生する可能性があります。これは、明示的な結合タイプが指定されていない場合、MySQL はデフォルトで INNER JOIN を使用するためです。 LEFT JOIN は、「LEFT JOIN」キーワードを使用して明示的に指定する必要があります。
デフォルトの結合タイプ
一般に信じられていることに反して、MySQL のデフォルトの結合タイプは LEFT JOIN ではありません。ただし、内部結合。内部結合は、クエリに含まれるすべてのテーブルの結合列に一致する値を持つ行のみを返します。
結合の視覚的表現
INNER の違いをよりよく理解するにはJOIN と LEFT JOIN については、次の図を考慮してください。表現:
Table 1 | Column A | Column B --------+---------+--------- 1 | A1 | B1 2 | A2 | B2 Table 2 | Column C | Column D --------+---------+--------- 1 | C1 | D1 2 | C2 | D2 Result: | Column A | Column B | Column C | Column D | |---|---|---|---| | A1 | B1 | C1 | D1
Table 1 | Column A | Column B --------+---------+--------- 1 | A1 | B1 2 | A2 | B2 Table 2 | Column C | Column D --------+---------+--------- 1 | C1 | D1 Result: | Column A | Column B | Column C | Column D | |---|---|---|---| | A1 | B1 | C1 | D1 | A2 | B2 | NULL | NULL
ご覧のとおり、左JOIN には、左側のテーブル (テーブル 1) のすべての行が含まれ、一致するものがあれば、それらを右側のテーブル (テーブル 2) の行と照合します。一致するものがない場合は、欠落している列に NULL 値が含まれます。
以上がMySQL のデフォルトの JOIN タイプは何ですか?また、LEFT JOIN との違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。