Разница в MySQL присоединиться против левое соединение


у меня есть этот запрос между базами данных...

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. Разве это не так?

4 58

4 ответа:

Я думал, что, не указывая тип соединения, предполагается, что это левое соединение. Разве это не так?

нет, соединение по умолчанию является внутренним соединением.

здесь визуальное объяснение SQL присоединяется.

внутреннее соединение

enter image description here

левое соединение

enter image description here

нет. Если тип не указан, то Это. Почитать о различиях;Википедия

Я считаю, что по умолчанию -INNER JOIN Если вы просто указать JOIN.

Если вы только что упомянули JOIN in query по умолчанию это будет считаться как внутреннее соединение.

левое соединение: левое соединение будет принимать все элементы из левой таблицы и только соответствующие записи из правой таблицы следующим образом. пример:

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

надеюсь, что это помогает.