一、概念:

  • 把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      12      2

3、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        12        1            2        23        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        12        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        12        1            3        2

4、总结:

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

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

转载自:https://blog.csdn.net/qq_27918787/article/details/52297309

left join on详解相关推荐

  1. java多线程中的join方法详解

    java多线程中的join方法详解 方法Join是干啥用的? 简单回答,同步,如何同步? 怎么实现的? 下面将逐个回答. 自从接触Java多线程,一直对Join理解不了.JDK是这样说的:join p ...

  2. [SV]SystemVerilog進程之fork join专题详解及案例分析

                SystemVerilog進程之fork...join专题详解及案例分析  目錄 一.fork-join 1.1.fork join example, 二.fork-join_ ...

  3. Mysql 优化器内部JOIN算法hash join On-Disk Hash Join Grace Hash Join Hybrid hash join过程详解

    Mysql 各种hash join算法讲解 hash join的概述 提到hash join之前自然得说Nest loop join,以两个表的关联为例,它其实是个双层循环,先遍历外层的表(n条),再 ...

  4. mysql inner join where_详解mysql 使用left join添加where条件的问题分析

    当前需求: 有group和factor两张表,一个group对应多个factor,现在想查询有效的group和对应的有效的factor,两个表都有isDel逻辑删除标志. 最开始的错误写法一: SEL ...

  5. Oracle的join默认为,Oracle中的三种Join方法详解

    这里将为大家介绍Oracle中的三种Join方法,Nested loop join.Sort merge join和Hash join.整理出来以便帮助大家学习. 基本概念 Nested loop j ...

  6. Java多线程中join方法详解

    join()方法用于让当前执行线程等待join线程执行结束.其实现原理是不停的检查join线程是否存活,如果join线程存活则让当前线程永远等待. join()方法部分实现细节 while(isAli ...

  7. mysql join 算法_【MySQL】之join算法详解

    在阿里巴巴的java开发手册有这么一条强制规定:超过三个表禁止join,需要join的字段,数据类型保持绝对一致,多表关联查询时,要保证被关联的字段需要有索引. 为什么尽量避免使用join?如果使用j ...

  8. Mysql: SQL JOIN 子句详解

    SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段. 最常见的 JOIN 类型:SQL INNER JOIN(简单的 JOIN).SQL LEFT JOIN.SQL  ...

  9. SQL中的left outer join,inner join,right outer join用法详解1

    LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行. LEFT JOIN 关键字语法 SELECT column_ ...

  10. Hive JOIN使用详解

    Hive是基于Hadoop平台的,它提供了类似SQL一样的查询语言HQL.有了Hive,如果使用过SQL语言,并且不理解Hadoop MapReduce运行原理,也就无法通过编程来实现MR,但是你仍然 ...

最新文章

  1. [QQ游戏]五子棋WG 1.0
  2. js怎么制作html的主题,用HTML和CSS以及JS制作简单的网页菜单界面的代码
  3. np.copysign_带有Python示例的math.copysign()方法
  4. java 连接 sftp失败_java – 文件上传到SFTP失败(Apache VFS)
  5. 4007-基于邻接表的新边的增加(C++,附思路)
  6. Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析(5)...
  7. webpack源码解析系列(一)
  8. 设置input框只能输入6位为数字的支付密码
  9. ProLiant 380G5服务器上安装netware4.11
  10. Firefox主页被360篡改该怎么办
  11. Redis最大内存配置
  12. 使用 keepalived 设置虚拟 IP 环境
  13. 全国天气预报信息数据接口 API
  14. 浙大版《C语言程序设计(第3版)》题目集(编程题q41-q50)
  15. 毕业旅行 | 用一场纽约5日游告别难忘青葱岁月
  16. 记一次《C语言踩内存》问题定位有感
  17. java对cookie的操作,JAVA操作COOKIE
  18. 昨天去做地推,在路上看见了这么繁茂的仙人掌
  19. 大姨妈在运营方面积累的一些经验(3点)
  20. 俞敏洪 :阻碍你成长的,其实是你自己

热门文章

  1. 为什么说软件外包公司没前途
  2. JAVA调用WINRAR压缩文件并加密
  3. 单片机音乐盒完整代码
  4. 新手必读:Arduino UNO R3教程,原理图,引脚图,详细介绍
  5. 宝宝看的启蒙动画片哪里找?三款电视软件推荐,孩子启蒙不怕难
  6. 使用html仿支付宝首页,iOS 仿支付宝首页样式(二)
  7. [Nowcoder] [Wannafly26B] 冥土追魂 [贪心]
  8. 三位数的茎叶图怎么看_如何用茎叶图表示三位数,什么是茎叶图
  9. MT8183核心板 MTK8183处理器规格参数
  10. Oracle PL/SQL基础语法学习13:比较运算符