mysql中join后on、where的区别
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;)
- 按照on后的条件筛选B.id<3
- 1中查询出的结果与A left join
语句二
- 先left join
- 然后再根据where条件再次筛选
使用注意事项:
- ON后面的筛选条件主要是针对关联表的(对于主表的筛选条件不适用)
- 对于主表的筛选条件应该放在where后面,不应该放在ON后面
- 如果查询条件查询后才join连接应该把查询条件放在ON后面;如果要连接完毕后才筛选应该把条件放在where后面
- 对于关联表可以先做子查询再join
mysql中join后on、where的区别的更多相关文章
- Mysql中unique与primary约束的区别分析(转)
本文章来给大家介绍在mysql中unique与primary约束的区别分析,unique与primary是我们在创建mysql时常用的类型了,下面我来给大家介绍介绍. 定义了UNIQUE约束的字段 ...
- 万答#11,MySQL中char与varchar有什么区别
万答#11,MySQL中char与varchar有什么区别 1.实验场景 GreatSQL 8.0.25 InnoDB 2.实验测试 2.1 区别 参数 char varchar 长度是否可变 定长 ...
- MySQL中join的用法
近期用phpcms v9做项目,初期没有问题,后期随着数据量的增大,phpcms v9后台出现的栏目更新不动的情况,初期我以为是程序的问题,进行了程序排查,没有发现任何问题,登录上centos服务器后 ...
- mysql中where和having子句的区别和具体用法
1.mysql中的where和having子句的区别 having的用法 having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having ...
- mysql中in和exists二者的区别和性能影响
mysql查询语句in和exists二者的区别和性能影响 还记得一次面试中被人问到in 和 exists的区别,当然只是草草做答,现在来做下分析. mysql中的in语句是把外表和内表作hash 连接 ...
- Mysql中Join用法及优化
Join的几种类型 笛卡尔积(交叉连接) 如果A表有n条记录,B表有m条记录,笛卡尔积产生的结果就会产生n*m条记录.在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者直接用f ...
- 正确理解MySQL中的where和having的区别
原文:https://blog.csdn.net/yexudengzhidao/article/details/54924471 以前在学校里学习过SQLserver数据库,发现学习的都是皮毛,今天以 ...
- Mysql 中is null 和 =null 的区别
在mysql中,筛选非空的时候经常会用到is not null和!=null,这两种方法单从字面上来看感觉是差不多的,其实如 果去运行一下试试的话差别会很大! 为什么会出现这种情况呢? null 表示 ...
- mysql中 date datetime time timestamp 的区别
MySQL中关于时间的数据类型:它们分别是 date.datetime.time.timestamp.year date :"yyyy-mm-dd" 日期 1000-01 ...
随机推荐
- php---进行RSA进行非对称加密
参考文档: https://blog.csdn.net/zhihua_w/article/details/74002212 http://www.bm8.com.cn/webtool/rsa/http ...
- Centos6.5 虚拟机Mongodb创建副本集
简单副本集的搭建 官方demo的最小化的副本集为Three Member Sets,一个primary和两个secondary.我们先就搭建一个这样的测试环境. 首先建立三个数据目录和日志目录: cd ...
- Python重要基础点
这里记录一些实际编写代码时遇到的常用/重要的内容,有前辈的,也有自己整理加进来的. 以点的形式记录,之后遇到的内容会慢慢补充进来 1. 斜杠 / :斜字第一笔, 转义用反斜杠 \ : 转的最后一笔 2 ...
- ELk之使用kibana展示访问IP地图
参考文档:http://blog.51cto.com/ls40905250/1915280 https://blog.csdn.net/zsjwish/article/details/79792212 ...
- web前端开发笔记(1)
一.HTML标签书写有哪些规范? 页面编码. 文档声明. 关键字与描述. 行内元素不能包含块级元素. a标签不能嵌套a标签. 标签名和属性必须用小写字母书写,属性必须加引号,标签必须闭合,单标签页必 ...
- CSS布局与定位——height百分比设置无效/背景色不显示
CSS布局与定位——height百分比设置无效/背景色不显示 html元素属性width和height的值有两种表达方式,一是固定像素如“100px”,一是百分比如“80%”, 使用百分比的好处是元素 ...
- Chrome百度不显示中文字体
chrome://flags/ 启用DirectWrite 关闭就可以了
- js实现点击div以外区域,隐藏div区域
<body style="text-align:center;"> <input type="text" style="width: ...
- FS Shell命令手册
1. FS Shell 1.1 简介 调用文件系统(FS)Shell命令应使用 bin/hadoop fs <args>的形式. 所有的的FS shell命令使用URI ...
- python float()
1.函数功能将一个数值或者字符转换成浮点型数值 >>> a = 12345 >>> amount = float(a) >>> print(amo ...