SELECT * FROM A;

SELECT * FROM B;

以上是两张表的机构



SELECT * FROM A LEFT JOIN B ON A.id=b.a_id ;

语句一   :   SELECT * FROM A LEFT JOIN B ON A.id=b.a_id AND A.id <3;

语句二:  SELECT * FROM A LEFT JOIN B ON A.id=b.a_id WHERE B.id <3;

两个语句查询出来的结果是有差异的

sql查询的关键字顺序为  from -> where -> group by-> having ->order by

left join 是在from范围的所以先on条件筛选,然后再做left join

而where是在left join的结果之后再次筛选

语句一(等价于SELECT *FROM A LEFT JOIN (SELECT * FROM B WHERE B.id < 3) b2 ON A.id = b2.a_id;)

  1. 按照on后的条件筛选B.id<3
  2. 1中查询出的结果与A left join

语句二

  1. 先left join
  2. 然后再根据where条件再次筛选


使用注意事项:

  1. ON后面的筛选条件主要是针对关联表的(对于主表的筛选条件不适用)
  2. 对于主表的筛选条件应该放在where后面,不应该放在ON后面
  3. 如果查询条件查询后才join连接应该把查询条件放在ON后面;如果要连接完毕后才筛选应该把条件放在where后面
  4. 对于关联表可以先做子查询再join

mysql中join后on、where的区别的更多相关文章

  1. Mysql中unique与primary约束的区别分析(转)

    本文章来给大家介绍在mysql中unique与primary约束的区别分析,unique与primary是我们在创建mysql时常用的类型了,下面我来给大家介绍介绍.   定义了UNIQUE约束的字段 ...

  2. 万答#11,MySQL中char与varchar有什么区别

    万答#11,MySQL中char与varchar有什么区别 1.实验场景 GreatSQL 8.0.25 InnoDB 2.实验测试 2.1 区别 参数 char varchar 长度是否可变 定长 ...

  3. MySQL中join的用法

    近期用phpcms v9做项目,初期没有问题,后期随着数据量的增大,phpcms v9后台出现的栏目更新不动的情况,初期我以为是程序的问题,进行了程序排查,没有发现任何问题,登录上centos服务器后 ...

  4. mysql中where和having子句的区别和具体用法

    1.mysql中的where和having子句的区别 having的用法 having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having ...

  5. mysql中in和exists二者的区别和性能影响

    mysql查询语句in和exists二者的区别和性能影响 还记得一次面试中被人问到in 和 exists的区别,当然只是草草做答,现在来做下分析. mysql中的in语句是把外表和内表作hash 连接 ...

  6. Mysql中Join用法及优化

    Join的几种类型 笛卡尔积(交叉连接) 如果A表有n条记录,B表有m条记录,笛卡尔积产生的结果就会产生n*m条记录.在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者直接用f ...

  7. 正确理解MySQL中的where和having的区别

    原文:https://blog.csdn.net/yexudengzhidao/article/details/54924471 以前在学校里学习过SQLserver数据库,发现学习的都是皮毛,今天以 ...

  8. Mysql 中is null 和 =null 的区别

    在mysql中,筛选非空的时候经常会用到is not null和!=null,这两种方法单从字面上来看感觉是差不多的,其实如 果去运行一下试试的话差别会很大! 为什么会出现这种情况呢? null 表示 ...

  9. mysql中 date datetime time timestamp 的区别

    MySQL中关于时间的数据类型:它们分别是 date.datetime.time.timestamp.year date :"yyyy-mm-dd"  日期     1000-01 ...

随机推荐

  1. python---使用md5加密

    python中使用md5进行加密字符串: __author__ = 'Administrator' #-*- coding: utf-8 -*- import hashlib aa = ' #需要加密 ...

  2. ElasticSearch 聚合函数

    一.简单聚合 桶 :简单来说就是满足特定条件的文档的集合. 指标:大多数 指标 是简单的数学运算(例如最小值.平均值.最大值,还有汇总),这些是通过文档的值来计算. 桶能让我们划分文档到有意义的集合, ...

  3. 51nod 1009 - 数字1的数量 - [数位DP][模板的应用以及解释]

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1009 基准时间限制:1 秒 空间限制:131072 KB 给 ...

  4. iOS-深入理解(转载)

    RunLoop 是 iOS 和 OS X 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理.之后会介绍一下在 iOS 中,苹果是如何 ...

  5. PL/SQL EXCEPTION捕获抛出异常

    EXCEPTION抛出异常 处理除数为零异常 declare varA number; begin varA:=10/0; dbms_output.put_line('IT WILL NOT WORK ...

  6. requests库的post请求

    requests库的post请求 #coding:utf-8 import requests import json class Trans(object): def __init__(self, w ...

  7. 理解SQL SERVER中的逻辑读,预读和物理读

    转自:https://www.cnblogs.com/CareySon/archive/2011/12/23/2299127.html 在我的上一篇关于SQL SERVER索引的博文,有圆友问道关于逻 ...

  8. Dom最常用的API

    document方法: getElementById(id) Node 返回指定结点的引用 getElementsByTagName(name) NodeList 返回文档中所有匹配的元素的集合 cr ...

  9. 十天精通CSS3(6)

    属性选择器 在HTML中,通过各种各样的属性可以给元素增加很多附加的信息.例如,通过id属性可以将不同div元素进行区分. 在CSS2中引入了一些属性选择器,而CSS3在CSS2的基础上对属性选择器进 ...

  10. (转)FastDFS文件存储

    一.FastDFS介绍 FastDFS开源地址:https://github.com/happyfish100 参考:分布式文件系统FastDFS设计原理 参考:FastDFS分布式文件系统 个人封装 ...