MySQL中左连接和右连接的区别举例详解

 更新时间:2025年07月31日 09:57:54   作者:甜瓜瓜哥  
在MySQL中多表查询是常见的操作,涉及到两个或多个表的数据合并,这篇文章主要介绍了MySQL中左连接和右连接区别,文中通过代码介绍的非常详细,需要的朋友可以参考下

1. 概述

MySQL中的左连接(LEFT JOIN)和右连接(RIGHT JOIN)是两种外连接方式,核心区别在于保留哪个表的全部数据。左连接以左表为主,右连接以右表为主。两者本质对称,实际选择取决于数据需求和查询可读性。

2. 理论说明

左连接(LEFT JOIN)为例说明,右连接同理:

  • 保留左表所有行:无论右表是否有匹配,左表的所有记录都会显示。
  • 右表无匹配时填充NULL:若右表无匹配数据,结果中右表对应的字段值为NULL。
  • 语法示例:
SELECT * 
FROM 左表 
LEFT JOIN 右表 ON 左表.字段 = 右表.字段;

左连接和右连接可相互转换,通过调整表顺序实现相同效果:

A LEFT JOIN B = B RIGHT JOIN A

3. 举例说明

  1. 左连接结果(A LEFT JOIN B):
    保留所有学生,未匹配的订单为NULL。
id | name   | product
1  | Alice  | 苹果
2  | Bob    | NULL
3  | Charlie| 香蕉
  1. 右连接结果(A RIGHT JOIN B):
    保留所有订单,未匹配的学生为NULL。
id   | name   | product
1    | Alice  | 苹果
3    | Charlie| 香蕉
NULL | NULL   | 橘子

关键注意事项

1)ON条件与WHERE过滤:ON子句影响连接时的匹配逻辑,不满足条件的右表行会被设为NULL,但左表行仍保留(左连接)。

2)WHERE子句在连接后过滤,可能导致排除左/右表的NULL行(失去外连接意义)。

总结

到此这篇关于MySQL中左连接和右连接区别的文章就介绍到这了,更多相关MySQL左连接和右连接区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于MySql 10038错误的完美解决方法(三种)

    关于MySql 10038错误的完美解决方法(三种)

    本文给大家带来三种有关mysql报10038错误的解决方法,每种方法都非常不错,需要的朋友参考下
    2016-09-09
  • Mysql 8.0.18 hash join测试(推荐)

    Mysql 8.0.18 hash join测试(推荐)

    这篇文章给大家介绍Mysql 8.0.18 hash join测试的相关知识,本文通过实例代码讲解,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2019-10-10
  • C++连接使用MySQL的方法

    C++连接使用MySQL的方法

    这篇文章主要为大家详细介绍了C++连接使用MySQL的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • Explain命令在优化查询中的实际应用

    Explain命令在优化查询中的实际应用

    在MySQL中,EXPLAIN命令是一种非常重要的查询优化工具,它可以帮助我们分析SQL查询语句的执行计划,以及如何优化它们。本文介绍了Explain命令在优化查询中的实际应用,感兴趣的小伙伴可以参考阅读
    2023-04-04
  • 小记一次mysql主从配置解决方案

    小记一次mysql主从配置解决方案

    mysql主从方案主要作用:读写分离,使数据库能支撑更大的并发。在报表中尤其重要。由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那么报表sql将不会造成前台锁,保证了前台速度。
    2015-10-10
  • MySQL数据库体系架构详情

    MySQL数据库体系架构详情

    这篇文章主要介绍了MySQL体系架构,根据大部分的面试内容所描述,需要的朋友可以参考下面文章内容
    2021-09-09
  • SQL字符型字段按数字型字段排序实现方法

    SQL字符型字段按数字型字段排序实现方法

    由于是按字母顺序排列,所以123排在了2的前面,显然不符合我们的要求,那么怎样才能按照我们预想的数字顺序排序呢
    2013-03-03
  • 解决mysql出现错误:ERROR 1046 (3D000):No database selected

    解决mysql出现错误:ERROR 1046 (3D000):No database selected

    这篇文章主要给大家介绍了关于解决mysql出现错误:ERROR 1046 (3D000):No database selected的相关资料,No database selected可以理解为没有选择种数据库,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • linux安装两个mysql(8.0和5.7),并同时使用方式

    linux安装两个mysql(8.0和5.7),并同时使用方式

    这篇文章主要介绍了如何在CentOS 7上下载和安装MySQL 8.0和MySQL 5.7.30,并详细描述了安装步骤,包括解压、配置、初始化和启动等过程
    2024-12-12
  • 关闭和打开本地的mysql实现方式

    关闭和打开本地的mysql实现方式

    这篇文章主要介绍了关闭和打开本地的mysql实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05

最新评论