首页 >数据库 >mysql教程 >MySQL 中的 JOIN 和 LEFT JOIN 有什么区别?

MySQL 中的 JOIN 和 LEFT JOIN 有什么区别?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-25 16:13:11791浏览

What is the difference between JOIN and LEFT JOIN in MySQL?

理解 MySQL 中 JOIN 和 LEFT JOIN 的区别

在 SQL 中,连接表允许我们根据特定的条件组合多个表中的数据标准。两种常见的联接类型是 JOIN 和 LEFT JOIN。

JOIN 与 LEFT JOIN

JOIN 仅返回与联接条件匹配的行,实质上创建记录的子集符合指定标准的。另一方面,LEFT JOIN 检索左表中的所有行,并且仅检索右表中匹配的行。右表中没有匹配的行将返回 NULL 值。

MySQL 中的默认联接类型

与用户的假设相反,MySQL 中的默认联接类型是 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

默认情况下,此查询使用 INNER JOIN,它仅返回在所有四个连接表中都有相应条目的作业。要将其转换为 LEFT JOIN,您可以将 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`
        LEFT JOIN `DM_Server`.servers ON servers.ServerID = Jobs.Jobs_ServerID
        LEFT JOIN `cpod_live`.`digital_inventory` ON digital_inventory.jobname = Jobs.Jobs_Name
        LEFT JOIN `cpod_live`.`products` ON products.products_pdfupload = CONCAT(digital_inventory.jobname, ".pdf")
        LIMIT 50

以上是MySQL 中的 JOIN 和 LEFT JOIN 有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn