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

INNER JOIN, LEFT JOIN, RIGHT JOIN 的区别

今天我们来一起探索下 JOIN,JOIN 作为数据库操作的核心概念,用于合并两个或多个表中的数据。

一、JOIN (INNER JOIN)

1、基本功能:返回两个表中匹配成功的行。

2、特点:

  • 只保留两表中都满足连接条件的记录;
  • 如果某行在一个表中存在但在另一个表中没有匹配项,则该行不会出现在结果中;
  • 结果集的行数两个原表的行数。

3、语法

SELECT columns
FROM table1
[INNER] JOIN table2 ON table1.column = table2.column;

4、示例

SELECT orders.order_id, customers.customer_name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id;

二、LEFT JOIN (LEFT OUTER JOIN)

1、基本功能:返回左表的所有行,即使右表中没有匹配。

2、特点

  • 保留左表的全部记录;
  • 当右表无匹配时,右表字段显示为 NULL
  • 结果集的行数 = 左表的行数。

3、语法

SELECT columns
FROM table1
LEFT [OUTER] JOIN table2 ON table1.column = table2.column;

4、示例

SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.dept_id = departments.dept_id;

三、RIGHT JOIN (RIGHT OUTER JOIN)

1、基本功能:返回右表的所有行,即使左表中没有匹配。

2、特点

  • 保留右表的全部记录;
  • 当左表无匹配时,左表字段显示为 NULL
  • 结果集的行数 = 右表的行数;
  • 实际使用较少,通常可以用 LEFT JOIN 替代。

3、语法

SELECT columns
FROM table1
RIGHT [OUTER] JOIN table2 ON table1.column = table2.column;

4、示例

SELECT employees.name, departments.department_name
FROM employees
RIGHT JOIN departments ON employees.dept_id = departments.dept_id;

实际使用建议

  • INNER JOIN 是最常用的,适用于需要两个表都有数据的场景;
  • LEFT JOIN 常用于需要主表完整数据,关联表可有可无的情况;
  • RIGHT JOIN 使用较少,通常可以通过调换表顺序用 LEFT JOIN 实现;
  • 注意 NULL 值的处理,特别是在 WHERE 条件中。

在强者的世界中,即便是戴着镣铐跳舞,舞也会跳得铿锵有力。-- 烟沙九洲

http://www.dtcms.com/a/269778.html

相关文章:

  • 字节面试被问到“手机号存储选 Int 还是 String”!
  • 区块链技术促进算力生态发展的具体案例
  • Python 机器学习核心入门与实战进阶 Day 6 - 模型保存与加载(joblib / pickle)
  • 2025年Linux安装MySQL详细教程
  • mysql-笔记
  • 服务器经常出现蓝屏是什么原因导致的?如何排查和修复?
  • Nature子刊:EPFL-ANU团队实现晶格对称性编程手性,双通道光学加密动态范围创1.6新高
  • Element-Plus-全局自动引入图标组件,无需每次import
  • 集群与集群应用
  • 东南亚主播解决方案|东南亚 TikTok 直播专线:纯净住宅 IP 、直播不卡顿
  • Spring自动装配(xml)
  • 芯片之后,AI之争的下一个战场是能源?
  • 小架构step系列08:logback.xml的配置
  • 知识库中如何确实嵌入文本块大小?语义完整性与检索颗粒度的平衡机制
  • 聊一聊软件架构师
  • C++排序算法全解析(加强版)
  • 单调栈通关指南:从力扣 84 到力扣 42
  • 前端技术小结
  • Android Jetpack Compose状态管理与状态提升
  • linux安装CUDA
  • VM文件管理与Vi/vim操作
  • multicore和multithreading
  • 多模态交互HMI全解析:语音、手势、眼动追踪的集成方案
  • rocketmq 刷盘机制 与同步机制区别
  • JavaScript之数组方法详解
  • VSYNC 深度解析
  • Apollo源码架构解析---附C++代码设计示例
  • 提炼总结—ROS2机器人开发(完结)
  • 【WEB】Polar靶场 16-20题 详细笔记
  • Python实现二分查找算法详解