联合查询时过滤条件放在ON之后和放在WHERE之后的区别
来源:互联网 发布:pp助手mac备份 编辑:程序博客网 时间:2024/05/18 02:25
联合查询时过滤条件放在ON之后和放在WHERE之后的区别
有两个表,A表和B表,我们经常会通过一些关键字段来联合查询两张表里的数据,如:
select *
from A
left join B
on A.bizNo = B.bizNo
如果我们想要在上述条件上再增加一些过滤条件,比如B.name = 'XXX'。
那么我们有两种写法:
写法1:
select *
from A
left join B
on A.bizNo = B.bizNo and B.name = 'XXX'
写法2:
select *
from A
left join B
on A.bizNo = B.bizNo
where B.name = 'XXX'
这两种写法的区别在于,过滤条件放在ON的后面是在联合之前就进行过滤,放在WHERE后面是在联合之后的结果集上进行过滤。
如果A的记录在B中都能够查到数据的话,那么两种写法的结果是一样的。
否则会有差别,假如A中有两条记录a1,a2,其中a1可以在B中查到记录,a2无法查到记录。
那么在写法1的情况下,最终的结果集会有两条记录如下:
a1 b1
a2 null
在写法2的情况下,最终的结果集只有一条记录:
a1 b1
阅读全文
0 0
- 联合查询时过滤条件放在ON之后和放在WHERE之后的区别
- SQL中过滤条件放在on和where中的区别
- MYSQL联表查询LEFT JOIN 中 WHERE条件放在ON条件里和外部的区别
- SQL中条件放在on后与where后的区别
- 连接查询,条件在on和where后面的区别
- case 放在Where
- 学习笔记 C++ const放在函数体前和函数参数列表之后的作用
- MySQL 查询 根据某个字段查询,且字段值为整数,放在Where 条件上
- 部署项目之后,.jsp文件编译之后的.class文件放在了哪里?
- 条件放在表中的SQL查询的解决方案
- 把 Script 标签 放在页面的最底部的 body 封闭之前 和封闭之后有什么区别?浏览器会如何解析它们?
- 在使用left jion时,on和where条件的区别
- Android 4.4以下ListView addHeader和addFooter放在setAdapter之后导致异常的原因分析和解决
- 对与主表的筛选条件,应该放在where后面
- JS放在head和放在body中的区别
- JS放在head和放在body中的区别
- JS放在head和放在body中的区别
- mysql数据库进行连接查询时在join on 后的and 和where 区别
- java eclipse关于JDK版本转换以及JDK版本查看
- 我到底要做什么呀?
- bootstrap-daterangepicker 双日历控件
- java判断字符串为空
- mysql主从复制(三)
- 联合查询时过滤条件放在ON之后和放在WHERE之后的区别
- Call分析(三)Call中运行的任务
- Lua内置函数大全
- mysql中的一些锁问题
- spring boot 学习(一)
- 从gbdt到xgboost
- Linux内核异步数据处理--kfifo
- FindBugs的使用
- java的强引用,软引用,弱引用,虚引用