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

【MySQL】查询语句之inner、left、right、full join 的区别

 前言:

        INNER JOIN 和 OUTER JOIN 是SQL中常用的两种连接方式,用于从两表活多表中提取相关的数据。两者区别主要在于返回的 结果集 如何处理 匹配 与 不匹配 的行。

目录

1、INNER JOIN

2、OUTER JOIN

3、总结


1、INNER JOIN

        称为内连接,只有查询的几张表中的列值相等时,才会返回这些行数据。如果某行其中一个表没有对应的匹配,那么则不会返回改行数据。

举个例子:有两张表,分别是a、b表。

a表数据                                                                        b表数据

                       

SQL语句:

SELECT a.`name`, b.age
FROM a
INNER JOIN b ON a.id = b.id;

 执行结果:

在这个例子中,id=3 的sr没有匹配的age,因此不会出现在结果中。

 2、OUTER JOIN

        outer join可以细分为三种:left join、right join、full  join

        ①left join:返回左表(这是我们的第一个表)的所有行,即使右表(第二个表)中没有匹配的行,依旧以显示所查询到的字段,只不过输出的结果为null。如下:

 SQL语句:

SELECT a.name, b.age
FROM a
LEFT JOIN b ON a.id= b.id;

  执行结果:

  

        ②right join:返回右表(第二个表)的所有行,即使左表(第一个表)中没有匹配的行,依旧可以显示所查询到的字段,输出也是为null。如下:

SQL语句:

SELECT a.name, b.age
FROM a
RIGHT JOIN b ON a.id = b.id;

执行结果:

 

        ③full join:返回两个表(或多个表)中的所有行,包括没有匹配上的行,在另一张表显示为null。如下:

SQL语句:因为MySQL不支持 full join,我们可以结合left join 与 right join 来模拟 full join(像PostgreSQL、SQL Server、Oracle、IBM Db2 都支持 full join)

SELECT* 
FROMaLEFT JOIN b ON a.id = b.id UNION ALL
SELECT* 
FROMaRIGHT JOIN b ON a.id = b.id 
WHEREa.id IS NULL;

执行结果:

3、总结

        1、inner join:仅返回两表(多表)匹配的行。

        2、left join:返回左表所有行与右表匹配行,右表未匹配上显示null。

        3、right join:返回右表所有行与左表匹配行,左表未匹配上显示null。

        4、null join:返回两表(多表)所有行,无论是否有匹配的行,未匹配的都像是为null。

http://www.lryc.cn/news/441234.html

相关文章:

  • Submariner 部署全过程
  • 驼峰命名法
  • Android IME输入法启动显示隐藏流程梳理
  • Java 入门指南:JVM(Java虚拟机)——类的生命周期与加载过程
  • Unity射击游戏开发教程:(36)敌人关卡生成器的设计和开发
  • AI对汽车行业的冲击和比亚迪新能源汽车市场占比
  • 2024年中国电子学会青少年软件编程(Python)等级考试(一级)核心考点速查卡
  • 游戏开发引擎__游戏场景(灯光,摄像机)
  • 2024 Snap 新款ar眼镜介绍
  • uni-app生命周期
  • LabVIEW机械产品几何精度质检系统
  • java 检测图片链接有没有效
  • 测试工程师学历路径:从功能测试到测试开发
  • JavaEE---Spring IOC(2)
  • Oracle字符集
  • RabbitMQ 常见使用模式详解
  • JavaEE初阶——初识EE(Java诞生背景,CPU详解)
  • iOS界面布局:屏幕尺寸与安全区域全面指南
  • javascript-代码执行原理
  • 【C++ | tips】const Date* operator() const中这两个const有什么区别?他们的作用是什么?
  • 开放的数据时代:Web3和个人隐私的未来
  • Kafka 安全机制详解及配置指南
  • 渗透测试综合靶场 DC-2 通关详解
  • 「iOS」——单例模式
  • Selenium自动化测试面试必备:高频面试题及答案整理
  • kettle 数据库迁移 使用分页原理实现 数据库mysql
  • 量化回测bt框架,策略类bt.Strategy详解,不是backtrader!提供bt双均线策略示例,比backtrader还简单
  • 网络安全宣传周 | DNS安全威胁与应对措施分享
  • 【图书介绍】《Altium Designer 24入门与案例实践(视频教学版)》
  • mysql事务的隔离级别学习