了解 MySQL 中的 JOIN 与 LEFT JOIN
MySQL 的 JOIN 操作允许我们通过指定多个表之间的公共列来组合来自多个表的数据。但是,了解各种连接类型之间的差异至关重要,特别是 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
查询执行错误LEFT JOIN
当您尝试转换所有 INNER JOIN 时如果在查询中使用 LEFT JOIN,则可能会遇到错误。这是因为,默认情况下,当未指定显式连接类型时,MySQL 使用 INNER JOIN。 LEFT JOIN 必须使用“LEFT JOIN”关键字显式指定。
默认联接类型
与普遍看法相反,MySQL 中的默认联接类型不是 LEFT JOIN但内连接。内部联接仅返回在查询涉及的所有表的联接列中具有匹配值的行。
联接的视觉表示
为了更好地理解 INNER 和 INNER 之间的区别JOIN 和 LEFT JOIN,考虑以下视觉效果表示:
Table 1 | Column A | Column B --------+---------+--------- 1 | A1 | B1 2 | A2 | B2 Table 2 | Column C | Column D --------+---------+--------- 1 | C1 | D1 2 | C2 | D2 Result: | Column A | Column B | Column C | Column D | |---|---|---|---| | A1 | B1 | C1 | D1
Table 1 | Column A | Column B --------+---------+--------- 1 | A1 | B1 2 | A2 | B2 Table 2 | Column C | Column D --------+---------+--------- 1 | C1 | D1 Result: | Column A | Column B | Column C | Column D | |---|---|---|---| | A1 | B1 | C1 | D1 | A2 | B2 | NULL | NULL
如你所见, LEFT JOIN 包括左表(表 1)中的所有行,并在存在匹配时将它们与右表(表 2)中的行进行匹配。如果没有匹配项,则缺失列将包含 NULL 值。
以上是MySQL 中的默认 JOIN 类型是什么?它与 LEFT JOIN 有何不同?的详细内容。更多信息请关注PHP中文网其他相关文章!