MySQL 中的默认 JOIN 类型是什么?它与 LEFT JOIN 有何不同?

Patricia Arquette
发布: 2024-11-16 08:56:02
原创
230 人浏览过

What is the default JOIN type in MySQL and how does it differ from LEFT JOIN?

了解 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板