尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

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

MySQL多表连接详解:INNER JOIN、LEFT JOIN、RIGHT JOIN,区别+案例
📅 发布时间:2026/7/15 13:20:58

前言

实际开发中,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,统一代码规范。

相关新闻

  • ROS2 Action入门:从Fibonacci实例掌握长时任务通信
  • 盒马鲜生卡用不上怎么变现?跑了三家回收平台后我总结了几个关键点 - 鼎鼎收礼品卡回收
  • 【设计模式】SpringBoot策略模式实战:告别if-else,实现支付场景的优雅解耦

最新新闻

  • 告别网盘限速!9大平台直链下载神器LinkSwift终极指南
  • 自定义评估准则:教你如何通过principle角色让NVIDIA-Nemotron-3-Ultra-550B-A55B-GenRM按特定规则评分
  • D2DX暗黑破坏神2终极现代化补丁:3步实现高清宽屏60帧体验
  • Windows窗口置顶神器:告别遮挡烦恼,工作效率翻倍的终极指南
  • ChatGPT用户画像实战手册:从原始对话日志→结构化标签→RFM分群→个性化策略(含12个已上线Prompt)
  • WeChatMsg技术方案:构建本地化微信数据提取与管理的完整解决方案

日新闻

  • 告别启动盘残留:用Diskpart彻底清除U盘EFI分区与恢复完整空间
  • 2026 年宜春诚信的塑料缠绕膜厂家哪个好,缠绕膜背后的秘密:你不知道的成本陷阱 - 领域鉴赏官
  • Arch ECS 入门指南:10分钟掌握C#高性能数据驱动架构

周新闻

  • IX9104 PCIe5.0 高速交换芯片@ACP#完整规格 + 应用场景总结
  • Unity游戏集成Coze智能体:实现NPC智能对话与知识库联动
  • SAP EPIC 建行回单查询:从标准类CL_EPIC_EXAMPLE_CN_CCB_GHTD到Z类的5处关键修改

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号