首页 > 数据库 > mysql教程 > MySQL内部,左,右和完整连接有何不同?

MySQL内部,左,右和完整连接有何不同?

Patricia Arquette
发布: 2025-01-25 15:12:11
原创
317 人浏览过

How Do INNER, LEFT, RIGHT, and FULL Joins Differ in MySQL?

深入理解MySQL JOIN类型的差异

MySQL 的 JOIN 子句允许您通过匹配公共字段值来组合多个表中的数据。根据用例的不同,可以使用多种 JOIN 类型:

INNER JOIN(内连接)

INNER JOIN 仅当两个表中都存在匹配项时才返回行。它执行集合交集运算,检索属于两个表的记录。

LEFT JOIN(左连接)

LEFT JOIN 返回左表中的所有行,而不管右表中是否存在匹配项。它使用 NULL 值填充右表中缺少的匹配项。

RIGHT JOIN(右连接)

RIGHT JOIN 与 LEFT JOIN 类似,但它返回右表中的所有行,而不是左表中的所有行。同样,NULL 值用于表示左表中缺少的匹配项。

FULL JOIN(全连接)

FULL JOIN 组合 LEFT 和 RIGHT 外连接的结果,返回两个表中的所有行。任何来自任一表的不匹配行都将填充 NULL 值。

示例

考虑两个表,TableATableB,它们包含以下数据:

<code>**TableA**
| id | firstName | lastName |
|---|---|---|
| 1 | arun | prasanth |
| 2 | ann | antony |
| 3 | sruthy | abc |

**TableB**
| id2 | age | Place |
|---|---|---|
| 1 | 24 | kerala |
| 2 | 24 | usa |
| 3 | 25 | ekm |
| 5 | 24 | chennai |</code>
登录后复制

INNER JOIN 示例

<code class="language-sql">SELECT *
FROM TableA
INNER JOIN TableB
ON TableA.id = TableB.id2;</code>
登录后复制

结果:

firstName lastName age Place
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm

LEFT JOIN 示例

<code class="language-sql">SELECT *
FROM TableA
LEFT JOIN TableB
ON TableA.id = TableB.id2;</code>
登录后复制

结果:

firstName lastName age Place
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm

RIGHT JOIN 示例

<code class="language-sql">SELECT *
FROM TableA
RIGHT JOIN TableB
ON TableA.id = TableB.id2;</code>
登录后复制

结果:

firstName lastName age Place
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
NULL NULL 24 chennai

FULL JOIN 示例 (MySQL不支持直接的FULL JOIN,需要使用UNION进行模拟)

MySQL 不直接支持 FULL JOIN,需要使用 LEFT JOINRIGHT JOIN 并结合 UNION 来模拟 FULL JOIN 的效果。

通过以上示例,可以清晰地看出不同 JOIN 类型在数据合并方面的差异。选择合适的 JOIN 类型对于高效地获取所需数据至关重要。

以上是MySQL内部,左,右和完整连接有何不同?的详细内容。更多信息请关注PHP中文网其他相关文章!

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