Подтвердить что ты не робот

Разница в 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 JOIN s. Я думал, что, не указывая тип соединения, он считается LEFT JOIN. Это не так?

4b9b3361

Ответ 1

Я думал, что, не указывая тип соединения, предполагается, что это ЛЕВЫЙ ПРИСОЕДИНЕНИЕ. Это не так?

Нет, объединение по умолчанию - INNER JOIN.

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

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

enter image description here

Левое соединение

enter image description here

Ответ 2

Нет. Если тип не указан, используется INNER JOIN. Читать разницу; wikipedia

Ответ 3

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

Ответ 4

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

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

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

Надеюсь, что это поможет.