web-dev-qa-db-ja.com

MySQL 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 JOINs。結合のタイプを指定しないことで、LEFT JOIN。そうではありませんか?

63
Webnet

結合のタイプを指定しないことにより、LEFT JOINであると想定されたと考えました。そうではありませんか?

いいえ、デフォルトの結合はINNER JOINです。

SQL結合の視覚的な説明 です。

内部結合

enter image description here

左結合

enter image description here

168
Mark Byers

いいえ。タイプが指定されていない場合、INNER JOIN 使用されている。違いを調べるには; wikipedia

13
rael_kid

デフォルトはINNER JOINJOINを指定した場合。

10
Flash

クエリでJOINをデフォルトで指定した場合は、INNER JOINと見なされます。

左結合:左結合は、Leftテーブルのすべての要素を取得し、Rightテーブルの一致するレコードのみをFollowsとして取得します。例:

SELECT column_name(s)
FROM table_name1 #(Left table)
LEFT JOIN table_name2 #(Right table)
ON table_name1.column_name=table_name2.column_name

お役に立てれば。

8
Java