当前位置: 首页 > news >正文

MySQL多表连接详解:INNER JOIN、LEFT JOIN、RIGHT JOIN,区别+案例

前言

实际开发中,90%的业务数据都分散在多张表中:用户表、订单表、商品表、分类表。单表查询完全无法满足需求,多表连接查询是后端开发必备核心技能。

很多新手永远分不清 INNER JOIN、LEFT JOIN、RIGHT JOIN 的使用场景,写关联查询要么数据缺失,要么数据重复。本篇用通俗易懂的讲解+可直接运行的实战案例,彻底搞定多表连接。


一、准备测试数据表

创建两张核心测试表:用户表、订单表,后续所有案例均基于此数据。

-- 用户表 CREATE TABLE user ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20) NOT NULL COMMENT '用户名' ); -- 订单表 CREATE TABLE `order` ( id INT PRIMARY KEY AUTO_INCREMENT, user_id INT COMMENT '关联用户ID', order_name VARCHAR(50) COMMENT '订单名称' ); -- 插入测试数据 INSERT INTO user (name) VALUES ('张三'),('李四'),('王五'); INSERT INTO `order` (user_id,order_name) VALUES (1,'张三的订单1'), (1,'张三的订单2'), (2,'李四的订单1');

数据说明:张三有2个订单,李四有1个订单,王五没有任何订单


二、INNER JOIN 内连接(交集)

核心作用

只查询两张表中相互匹配、存在关联的数据,取两表数据的交集,任意一方无匹配数据则不展示。

适用场景

查询「有订单的用户」「已产生数据的关联记录」,只需要有效关联数据,过滤无匹配的冗余数据。

实战案例

-- 查询有订单的用户及对应订单 SELECT u.id, u.name, o.order_name FROM user u INNER JOIN `order` o ON u.id = o.user_id;

查询结果

只展示张三、李四的订单数据,王五无订单,不会被查询出来


三、LEFT JOIN 左连接(左表全部+右表匹配)

核心作用

左表数据为基准,展示左表所有数据,右表匹配到数据则展示,未匹配到则填充 NULL。

适用场景

需要查询「所有用户,包含无订单的用户」「主体数据必须完整,附属数据可有可无」的场景,是开发中使用频率最高的连接方式。

实战案例

-- 查询所有用户,展示对应订单(无订单则显示null) SELECT u.id, u.name, o.order_name FROM user u LEFT JOIN `order` o ON u.id = o.user_id;

查询结果

展示所有3个用户,张三、李四展示对应订单,王五订单字段为 NULL。


四、RIGHT JOIN 右连接(右表全部+左表匹配)

核心作用

右表数据为基准,展示右表所有数据,左表匹配到数据则展示,未匹配到则填充 NULL。

适用场景

极少使用!所有 RIGHT JOIN 都可以改写为 LEFT JOIN,开发中统一用左连接,可读性更高。

实战案例

SELECT u.id, u.name, o.order_name FROM user u RIGHT JOIN `order` o ON u.id = o.user_id;

五、三种连接核心区别总结

连接方式

查询规则

适用场景

INNER JOIN

只查两表匹配数据(交集)

查询有效关联数据,过滤空数据

LEFT JOIN

左表全部 + 右表匹配数据

保留主体全部数据,附属数据可选

RIGHT JOIN

右表全部 + 左表匹配数据

基本不用,可替换为左连接


六、新手高频避坑点

1、LEFT JOIN 筛选右表数据,优先放在 ON 后,不要放 WHERE 后!WHERE 会过滤 NULL 数据,导致左连接失效。

2、多表连接必须写 ON 关联条件,遗漏会产生笛卡尔积,数据爆炸。

3、优先使用 LEFT JOIN,杜绝 RIGHT JOIN,统一代码规范。

http://www.jsqmd.com/news/1193843/

相关文章:

  • 外贸展会行业邮件营销平台怎么选?五款主流工具实测对比与选型参考 - U-Mail邮件系统
  • 【设计模式】SpringBoot策略模式实战:告别if-else,实现支付场景的优雅解耦
  • 终极指南:macOS Xbox控制器驱动完整配置与优化方案
  • 终极指南:3分钟完成Microsoft Office自动化部署的完整方案
  • 盒马鲜生卡用不上怎么变现?跑了三家回收平台后我总结了几个关键点 - 鼎鼎收礼品卡回收
  • GTA终极模组加载器:5分钟快速入门与完整使用指南
  • 打破语言壁垒:Translumo如何用3大引擎实现实时屏幕翻译革命
  • ROS2 Action入门:从Fibonacci实例掌握长时任务通信
  • SQL子查询实战:相关子查询vs非相关子查询,用法解析
  • 佛山百达翡丽中国官方售后服务门店 | 官方网站权威公示(2026 年 7 月最新) - 百达翡丽售后服务官网
  • 5分钟掌握Palworld存档转换工具:轻松编辑你的幻兽帕鲁游戏数据
  • 三步实现Windows与Office高效激活:KMS_VL_ALL_AIO智能脚本完全指南
  • Python零基础入门:从环境配置到简单爬虫实战指南
  • HoRain云--Hermes Agent 记忆系统
  • SIP稳定性决定AI体验?2026年呼叫中心系统与400电话硬核技术选型框架
  • 视频怎么压缩哪个好免费工具与无损方法实测 - 优企甄选
  • 2026年数字人AI公司选型指南:帮企业筛选高性价比靠谱服务商
  • 武汉百达翡丽中国官方售后服务网络全攻略 | 官方网站权威认证(2026 年 7 月最新) - 百达翡丽售后服务官网
  • 炉石传说脚本:重新定义游戏效率的革命性开源工具
  • 车载网络技术演进与标准全景解析:从经典总线到高速以太网
  • 苏州百达翡丽中国区官方售后服务网点 | 官方服务地址及客服热线权威公布(2026 年 7 月最新) - 百达翡丽售后服务官网
  • 阜阳2026年宣传片制作机构年度权威排名|专业视频制作公司多维度深度评测一站式广告片剪辑包装拍摄报价选择指南深度解析 - 全国影像制作行业测评
  • 三分钟彻底解决Windows和Office激活难题的智能神器
  • Kuzushiji数据集未来路线图:新版本发布计划与功能展望
  • 【ChatGPT用户评价分析实战手册】:3大高精度情感识别模型+5步清洗法,助你72小时内产出可信洞察
  • 如何在Windows上快速修复苹果设备连接问题:专业驱动解决方案终极指南
  • 福州浪琴中国官方售后服务网络全解析|官方网站权威认证(2026年7月最新) - 浪琴中国服务中心
  • G-Helper:告别臃肿控制中心,解锁华硕笔记本的纯净性能控制体验
  • 2026衡阳少儿美术培训哪家好 优选机构指南 - 谁都没有我好看
  • 九大网盘直链下载助手:免费解锁高速下载的全能解决方案