SQL中过滤条件放在on和where中的区别
sql中过滤条件放在on和where中的区别,inner join没区别。后来才想起来,连接查询除了inner join还有right join,left join。
join过程可以这样理解:首先两个表做一个笛卡尔积,on后面的条件是对这个笛卡尔积做一个过滤形成一张临时表,如果没有where就直接返回结果,如果有where就对上一步的临时表再进行过滤。下面看实验:
先准备两张表:
先执行inner join:
select * from person p inner join account a on p.id=a.id and p.id!=4 and a.id!=4;
select * from person p inner join account a on p.id=a.id where p.id!=4 and a.id!=4;
结果没有区别,前者是先求笛卡尔积然后按照on后面的条件进行过滤,后者是先用on后面的条件过滤,再用where的条件过滤。
再看看左连接left join
select * from person p left join account a on p.id=a.id and p.id!=4 and a.id!=4;
这下看出来不对了,id为4的记录还在,这是由left join的特性决定的,使用left join时on后面的条件只对右表有效(可以看到右表的id=4的记录没了)
select * from person p left join account a on p.id=a.id where p.id!=4 and a.id!=4;
where的过滤作用就出来了。。。
右连接的原理是一样的。。
到这里就真相大白了inner join中on和where没区别,右连接和左连接就不一样了。
SQL中过滤条件放在on和where中的区别相关推荐
- MySQL语句中过滤条件放在哪?on、where还是having,他们区别和联系
SQL语句中,过滤条件放在不同筛选器on.where和having的区别和联系. 蚂蚁金服的一道SQL面试题如下:SQL语句中,过滤条件放在on和where子句中的区别是什么? 当时满脑子是left ...
- jquery 中多条件选择器,相对选择器,层次选择器的区别
一.Jquery常用的过滤选择器如下所示: 1.:first,选取第一个元素,比如$("div:first")选取第一个div元素 2.:last,选取最后一个元素,比如$(&qu ...
- shell python比较_shell中的条件判断以及与python中的对比
shell中比如比较字符串.判断文件是否存在及是否可读等,通常用"[]"来表示条件测试. 注意:这里的空格很重要.要确保方括号的空格. if ....; then ...
- java 循环new对象_java中new一个对象放在循环体里面与外面的区别
首先说下问题: 这次在做项目的是出现了一个new对象在循环里面与外面造成的不同影响. 大家可以看到这个new的对象放在不同的位置产生的效果是不一样的. 经过多方查询与验证可以得出结论: * EasyU ...
- html中 title标签放在()位置,[单选] HTML中,title标签放在什么位置()
[单选] HTML中,title标签放在什么位置() 更多相关问题 补体最主要的生物学活性是A.溶菌.溶细胞作用B.调理吞噬作用C.免疫黏附作用D.炎症介质作用E.溶解 陷落柱出现前的预兆有().A. ...
- python中满足条件相加_符合Python中特定条件的元素计数
在本文中,我们将看到如何从Python列表中获取一些选定的元素.因此,我们需要设计一些条件,并且仅应选择满足该条件的元素并打印其计数. 求和 在这种方法中,我们有条件地选择元素并使用一些元素来获取它们 ...
- sql中条件放在on后面和where后面的区别
2019独角兽企业重金招聘Python工程师标准>>> 数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户. 在使用left jion时 ...
- SQL 中 条件放在on与where的区别
学无止境学无止境 今天在写左连接sql时将过滤条件放在on后,发现并没有得到我想要的结果,于是百度了解了,现记录: 数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时 ...
- java连接查询where_SQL中join连接查询时条件放在on后与where后的区别
数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户. 在使用left jion时,on和where条件的区别如下: 1. on条件是在生成临时表时使用的条 ...
最新文章
- C#如何进行多线程编程
- Yii框架2.0的视图和widgets表单的使用
- spring boot之eureka-client的pom
- 三维家可以导入别人的方案吗_广州深圳天津形位公差检测三维缺陷检测服务
- php能做的事情,成就事业要做的十件事
- HCIE-RS面试--P/A协商(超详细!)
- 手游运营基础知识大全
- 2台无线路由器桥接,共享打印机
- python中while和for的运行顺序_详解python while 函数及while和for的区别
- 项目经理领导力提升与塑造:从自己干到团队干
- 圣诞Party将至!来来来,露一手用Python 抽奖
- android x86安装到硬盘不能启动,PC下安装androidx86一些问题的解决方法,gui start
- android新浪微博改进版
- 【大厂面试合集】每日一刷——5. 字节跳动飞书部门2022后端工程师实习真题
- 华为荣耀magic是鸿蒙系统,荣耀Magic3是什么系统-采用什么系统
- 21天Java开发速成篇-Java从入门到大师01快速入门
- 最新最全的手机号正则表达式及其他常用正则校验
- OSGi原理与最佳实践:第一章 OSGi框架简介(1)Equinox
- 2020年中国网络文学出海市场发展现状分析 海外主要通过手机APP
- 你不得不知道的xxx系列汇总(10.29更新)
热门文章
- 计算机两万字符英语文献翻译,求一篇2万字符以上的工程类外文文献及翻译
- can硬件滤波 stm32cubemx_[转载]STM32的CAN滤波器设置
- ISOLINUX: A bootloader for Linux using ISO 9660/El Torito CD-ROMs
- 源码编译构建安装内核kernel
- Linux内核深入理解定时器和时间管理(4):定时器 timer
- OpenStack:heat安装使用-Openstack Heat try-out
- mysql5.7过滤重复数据_MySQL5.7 设置同步复制过滤不用重启mysql服务进程了
- python爬虫基本原理_Python爬虫【一】爬虫的基本原理
- Idea设置多开窗口
- html 滤镜兼容,CSS3 中各种滤镜介绍和兼容性说明 - 文章教程