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

+57
источник поделиться
4 ответа

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

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

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

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

enter image description here

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

enter image description here

+154
источник

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

+13
источник
другие ответы

Связанные вопросы


Похожие вопросы

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

+9
источник

Если вы только что упомянули 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

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

+7
источник

Посмотрите другие вопросы по меткам или Задайте вопрос