Mysql之left join的用法解读

 更新时间:2025年07月15日 09:57:01   作者:秋分的秋刀鱼  
文章讲解了SQL左连接(LEFT JOIN)的原理,指出左表全部记录会被保留,右表缺失时显示为NULL,ON子句用于关联条件,WHERE筛选左表数据,实例展示了不同条件对查询结果的影响,强调左连接中左表不可被过滤,右表限制需在ON中设置

简述

left JOIN:把left join左边的表的记录全部找出来。系统会先用表A和表B做个笛卡儿积,然后以表A为基表,去掉笛卡儿积中表A部分为NULL的记录。最后形成你的结果。

进行左连接时,就有涉及到主表、辅表,这时主表条件写在WHERE之后,辅表条件写在ON后面。

实例

1、表a结构和数据

table a(id, type):
id     type 
----------------------------------
1      1         
2      1          
3      2     

2、表b结构和数据

table b(id, class):
id    class 
---------------------------------
1      1
2      2

SQL语句调用

sql语句1

select a.*, b.* from a left join b on a.id = b.id and a.type = 1;

执行结果为:

a.id    a.type    b.id    b.class
---------------------------------------
1        1            1        1
2        1            2        2
3        2         

sql语句2

select a.*, b.* from a left join b on a.id = b.id where a.type = 1;

执行结果为:

a.id    a.type    b.id    b.class
----------------------------------------
1        1            1        1
2        1            2        2

sql语句3

select a.*, b.* from a left join b on a.id = b.id and b.class = 1;

执行结果为:

a.id    a.type    b.id    b.class
----------------------------------------
1        1            1        1
2        1            
3        2          

总结

sql语句1可见,left join 中左表的全部记录将全部被查询显示,on 后面的条件对它不起作用,除非再后面再加上where来进行筛选,这就是sql语句2了。

sql语句3可见,on后面的条件中,右表的限制条件将会起作用。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • JMeter压测Mysql教程分享

    JMeter压测Mysql教程分享

    文章介绍了如何使用JMeter进行数据库压力测试的步骤,包括安装JMeter、下载并配置MySQL JDBC驱动、设置测试计划、添加JDBC连接配置元件、添加JDBC请求取样器以及可选的监听器配置,最后,文章指导如何运行测试并分析结果,以评估数据库在不同压力下的性能表现
    2024-11-11
  • mysql命令行爱好者必备工具mycli

    mysql命令行爱好者必备工具mycli

    这篇文章主要介绍了mysql命令行爱好者必备工具mycli的相关知识,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-05-05
  • mysql中异常错误ERROR:2002的解决方法

    mysql中异常错误ERROR:2002的解决方法

    最近在启动mysql的时候发现mysql报错了,错误代码是2002,通过查找相关的资料发现是var/lib/mysql 的访问权限问题,所以这篇文章主要介绍了mysql中异常错误ERROR:2002的解决方法,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-03-03
  • 如何使用Maxwell实时同步mysql数据

    如何使用Maxwell实时同步mysql数据

    这篇文章主要介绍了如何使用Maxwell实时同步mysql数据,帮助大家更好的理解和学习使用MySQL,感兴趣的朋友可以了解下
    2021-04-04
  • MySQL中 LBCC 和 MVCC 的理解及常见问题示例

    MySQL中 LBCC 和 MVCC 的理解及常见问题示例

    这篇文章主要介绍了MySQL中LBCC和MVCC的理解及常见问题示例,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的朋友可以参考一下
    2022-09-09
  • mysql查询昨天 一周前 一月前 一年前的数据

    mysql查询昨天 一周前 一月前 一年前的数据

    这篇文章主要介绍了mysql查询昨天 一周前 一月前 一年前的数据的方法,需要的朋友可以参考下
    2014-05-05
  • MySQL SHOW 命令的使用介绍

    MySQL SHOW 命令的使用介绍

    MySQL SHOW 命令的使用介绍,使用mysql的朋友可以参考下。
    2011-08-08
  • MySQL慢查询的坑

    MySQL慢查询的坑

    这篇文章主要介绍了MySQL慢查询的坑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • mysql之如何把查询的结果保存到新表

    mysql之如何把查询的结果保存到新表

    这篇文章主要介绍了mysql之如何把查询的结果保存到新表问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • 一文教你在windows中如何同时安装两个不同版本的Mysql

    一文教你在windows中如何同时安装两个不同版本的Mysql

    在项目中可能会用到多个版本的Mysql数据库,本文将和大家介绍一下如何在本机已安装了一个MySQL 5.7.38的情况下,再安装一个mysql 8.0版本吧
    2025-03-03

最新评论