内连接,左连接,右连接怎么区别开来?

区分这三种连接其实非常简单,核心就在于看**"谁的数据必须全部保留,谁的数据没有匹配就要被过滤掉"**。

为了让你彻底搞懂,我们可以把 user 表(用户)和 orders 表(订单)想象成两个班级,它们通过 user_id 这个学号来互相找朋友。

📌 内连接 (INNER JOIN):只留"双向奔赴"的

  • 核心逻辑 :取交集。只有当两张表能完美匹配上时,数据才会被保留。
  • 业务场景:查"哪些用户下过单"。
  • 结果表现:如果一个用户没下过单,或者一个订单找不到对应的用户,这两条数据都会被直接扔掉。
  • 口诀 :两边都有才算数。

📌 左连接 (LEFT JOIN):保住"左边老大"的全部

  • 核心逻辑 :保左表 。以 FROM 后面的左表为主,不管右表有没有匹配,左表的数据必须全部显示。如果右表没匹配上,就用 NULL(空值)来填充。
  • 业务场景:查"所有用户的下单情况"(哪怕他没买过东西,也要把他的名字列出来)。
  • 结果表现 :所有用户都会出现。张三下了两单就显示两行;李四没下单,他的订单字段就显示为 NULL。
  • 口诀 :左边全都要,右边随缘配。

📌 右连接 (RIGHT JOIN):保住"右边小弟"的全部

  • 核心逻辑 :保右表 。跟左连接完全相反,以 JOIN 后面的右表为主,不管左表有没有匹配,右表的数据必须全部显示。左表没匹配上就填 NULL。
  • 业务场景:查"所有订单的归属人"(哪怕系统里有找不到主人的异常脏数据订单,也要把它列出来)。
  • 结果表现 :所有订单都会出现。正常订单能匹配到用户名;异常订单的用户名字段显示为 NULL。
  • 口诀 :右边全都要,左边随缘配。

为了让你一眼看懂,我们用一张表格来总结它们的区别(假设左表是用户,右表是订单):

连接类型 核心作用 没匹配上的数据怎么办? 实际开发常用度
INNER JOIN 只要两者都有的(交集) 直接丢弃,不出现在结果里 ⭐⭐⭐⭐⭐ (查精准关联数据)
LEFT JOIN 保住左表所有,顺带查右表 左表保留,右表对应字段填 NULL ⭐⭐⭐⭐⭐ (最常用,符合阅读习惯)
RIGHT JOIN 保住右表所有,顺带查左表 右表保留,左表对应字段填 NULL ⭐ (极少用,通常会被改写成左连接)

💡 给你一个万能记忆法

在实际写 SQL 时,你只需要记住两点:

  1. 忘掉 RIGHT JOIN :因为 A RIGHT JOIN B 等价于 B LEFT JOIN A。只要你习惯把想保全的主表写在左边,永远只用 LEFT JOIN 就能解决 99% 的外连接需求。
  2. 看 ON 后面的条件 :INNER JOIN 是严格的"门当户对",而 LEFT/RIGHT JOIN 则是"偏心"地保护某一边的数据完整性。
相关推荐
wangqiaowq1 小时前
SQL server C盘空间占满的处理
数据库·sql
文人sec1 小时前
SQL基础入门笔记 | 从零基础到掌握核心查询语句
数据库·笔记·sql
数字新视界1 小时前
机房动环监控提升运维效率
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
SelectDB技术团队2 小时前
冷热分层从建到验:Storage Policy 创建、表级与分区级绑定、SHOW TABLETS 验证的完整命令
大数据·数据库·elasticsearch·搜索引擎·数据分析·apache doris·冷热分层
lambo mercy3 小时前
Day3:结构化输出
java·数据库·oracle
派小心.4 小时前
小程序分享链路中来源参数的传递校验
大数据·前端·数据库·人工智能·小程序·数据分析
Είναι η κοπέλα4 小时前
向量数据库与嵌入模型:Chroma/FAISS/Milvus 选型
数据库·milvus·faiss
IvorySQL4 小时前
从轮询到等待——PostgreSQL WAIT FOR LSN 特性深度解析
数据库·postgresql
OceanBase数据库官方博客5 小时前
被 VLDB 2027接收OceanBase 最新论文让数据库基(技术解析与实践)
数据库·人工智能·oceanbase
创邻科技5 小时前
国产图数据库刷新 LDBC 世界纪录:创邻科技 Galaxybase 在 SF100、SF300、SF1000 测试中全面领先”
数据库·科技