join on 和where 一起使用的细节
left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录。
right join :右连接,返回右表中所有的记录以及左表中连接字段相等的记录。
inner join: 内连接,又叫等值连接,只返回两个表中连接字段相等的行。
full join:外连接,返回两个表中的行:left join + right join。
cross join:结果是笛卡尔积,就是第一个表的行数乘以第二个表的行数。
关键字: on
数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。
在使用left jion时,on和where条件的区别如下:
1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。
假设有两张表:
表1:tab2
id | size |
1 | 10 |
2 | 20 |
3 | 30 |
表2:tab2
size | name |
10 | AAA |
20 | BBB |
20 | CCC |
两条SQL:
1、select * form tab1 left join tab2 on (tab1.size = tab2.size) where tab2.name=’AAA’
2、select * form tab1 left join tab2 on (tab1.size = tab2.size and tab2.name=’AAA’)
第一条SQL的过程:
|
第二条SQL的过程:
|
其实以上结果的关键原因就是left join,right join,full join的特殊性,不管on上的条件是否为真都会返回left或right表中的记录,full则具有left和right的特性的并集。 而inner jion没这个特殊性,则条件放在on中和where中,返回的结果集是相同的。
join on 和where 一起使用的细节相关推荐
- mysql中的联结_MySQL的联结(Join)语法
MySQL的联结(Join)语法 1.内联结.外联结.左联结.右联结的含义及区别: 在讲MySQL的Join语法前还是先回顾一下联结的语法,呵呵,其实连我自己都忘得差不多了,那就大家一起温习吧(如果内 ...
- python官网支持货到付款吗_官网购买的iPhone12pro还没发货?试着用Python快速入手...
引言 iPhone12pro有望成为2020年末真香机,动辄3000元的溢价让不少消费者选择了等待官网调货.除了官方与电商线上平台,苹果还采用了线下预约制提货.但每天少的可怜的出货量,和不到一秒钟就 ...
- MySQL的left on 【zt】
MySQL的left on [zt] (2008-11-03 17:27:30) 转载▼ 标签: it 分类: 学习笔记 MySQL多表连接查询Left Join,Right Join php开源嘛 ...
- java用不用stream_Java parallelStream不使用预期的线程数
Java 8 parallelStream似乎使用的线程数多于系统属性java.util.concurrent.ForkJoinPool.common.parallelism指定的线程数.这些单元测试 ...
- python超市买苹果_官网购买的iPhone12pro还没发货?试着用Python快速入手
引言 iPhone12pro有望成为2020年末真香机,动辄3000元的溢价让不少消费者选择了等待官网调货.除了官方与电商线上平台,苹果还采用了线下预约制提货.但每天少的可怜的出货量,和不到一秒钟就 ...
- JAVASCRIPT函数组合:有什么大不了的?
一些人会说,函数组合是某种神圣的真理.一个你应该沉思时卑微地跪下并上香的神圣原则.但函数组合其实并不复杂.不过你是否意识到,你可能一直在使用它.那么为什么函数式编程程序员会对此烦恼呢?它有什么大不了的 ...
- 神奇的 SQL 之 联表细节 → MySQL JOIN 的执行过程
问题背景 对于 MySQL 的 JOIN,不知道大家有没有去想过他的执行流程,亦或有没有怀疑过自己的理解(自信满满的自我认为!):如果大家不知道怎么检验,可以试着回答如下的问题 驱动表的选择 MySQ ...
- 神奇的 SQL 之 联表细节 → MySQL JOIN 的执行过程(二)
开心一刻 一头母牛在吃草,突然一头公牛从远处狂奔而来说:"快跑啊!!楼主来了!" 母牛说:"楼主来了关我屁事啊?" 公牛急忙说:"楼主吹牛逼呀!&qu ...
- java join 源码_join on 和where 一起使用的细节
left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录. right join :右连接,返回右表中所有的记录以及左表中连接字段相等的记录. inner join: 内连接,又 ...
最新文章
- 程序员笔记|如何编写优雅的Dockerfile
- Stackoverflow 高赞答案,为什么牛逼的程序员都不用 “ ! = null ' 做判空
- python if __name__ == '__main__'
- 【正一专栏】欧冠小组赛第四轮综述——有钱就能风清扬
- css3中clip属性
- Oracle执行计划中 并行和BUFFER SORT的问题
- html引用webpack插件,使用html-webpack-plugin,运行webpack,老是报错?
- java.lang.stackoverflowerror_java.lang.StackOverflowError——如何解决StackOverflowError错误
- (二十四)【2021 ACL】OntoED: Low-resource Event Detection with Ontology Embedding
- Python实例 61,62
- 2021年最新的Python大厂Python基础编程
- apirestful php自动测试,PHP实现自动识别Restful API的返回内容类型
- pyqt5 qstring在哪个库_PyQt模型/视图结构编程示例:QStringListModel的用法
- 【操作系统/OS笔记18】虚拟文件系统概念
- 个人用户可以向运营商申请短信接口吗?
- Ubuntu磁盘管理
- 【树莓派4B】如何烧录新的系统
- Flex Builder 3的破解
- 扫描普通二维码进入小程序
- 【华为诺亚方舟实验室】招聘:决策推理(强化学习)研究方向(实习、应届、社招、博后)均可以
热门文章
- PPTX新员工入场三级安全教育培训教材(附下载)
- indesign如何画弧线_Illustrator and Indesign中鲜为人知的超级技巧
- solrloud集群的配置,zoookeeper+IK分词器+solrcloud,以及集群连接,分片管理
- 发票查验系统中的发票台账具有哪些用处
- 在线播放器代码大全!
- Three.js 开发之加载外部GLTF模型和压缩(一)
- 树与图的深度优先遍历模版原理
- amd什么服务器芯片,AMD大杀器!AMD Naples服务器芯片如何占领市场
- 【数据库】sql实现两表关联更新
- Webpack详细打包步骤