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中的区别相关推荐

  1. MySQL语句中过滤条件放在哪?on、where还是having,他们区别和联系

    SQL语句中,过滤条件放在不同筛选器on.where和having的区别和联系. 蚂蚁金服的一道SQL面试题如下:SQL语句中,过滤条件放在on和where子句中的区别是什么? 当时满脑子是left ...

  2. jquery 中多条件选择器,相对选择器,层次选择器的区别

    一.Jquery常用的过滤选择器如下所示: 1.:first,选取第一个元素,比如$("div:first")选取第一个div元素 2.:last,选取最后一个元素,比如$(&qu ...

  3. shell python比较_shell中的条件判断以及与python中的对比

    shell中比如比较字符串.判断文件是否存在及是否可读等,通常用"[]"来表示条件测试. 注意:这里的空格很重要.要确保方括号的空格. if ....; then          ...

  4. java 循环new对象_java中new一个对象放在循环体里面与外面的区别

    首先说下问题: 这次在做项目的是出现了一个new对象在循环里面与外面造成的不同影响. 大家可以看到这个new的对象放在不同的位置产生的效果是不一样的. 经过多方查询与验证可以得出结论: * EasyU ...

  5. html中 title标签放在()位置,[单选] HTML中,title标签放在什么位置()

    [单选] HTML中,title标签放在什么位置() 更多相关问题 补体最主要的生物学活性是A.溶菌.溶细胞作用B.调理吞噬作用C.免疫黏附作用D.炎症介质作用E.溶解 陷落柱出现前的预兆有().A. ...

  6. python中满足条件相加_符合Python中特定条件的元素计数

    在本文中,我们将看到如何从Python列表中获取一些选定的元素.因此,我们需要设计一些条件,并且仅应选择满足该条件的元素并打印其计数. 求和 在这种方法中,我们有条件地选择元素并使用一些元素来获取它们 ...

  7. sql中条件放在on后面和where后面的区别

    2019独角兽企业重金招聘Python工程师标准>>> 数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户. 在使用left jion时 ...

  8. SQL 中 条件放在on与where的区别

    学无止境学无止境 今天在写左连接sql时将过滤条件放在on后,发现并没有得到我想要的结果,于是百度了解了,现记录: 数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时 ...

  9. java连接查询where_SQL中join连接查询时条件放在on后与where后的区别

    数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户. 在使用left jion时,on和where条件的区别如下: 1. on条件是在生成临时表时使用的条 ...

最新文章

  1. C#如何进行多线程编程
  2. Yii框架2.0的视图和widgets表单的使用
  3. spring boot之eureka-client的pom
  4. 三维家可以导入别人的方案吗_广州深圳天津形位公差检测三维缺陷检测服务
  5. php能做的事情,成就事业要做的十件事
  6. HCIE-RS面试--P/A协商(超详细!)
  7. 手游运营基础知识大全
  8. 2台无线路由器桥接,共享打印机
  9. python中while和for的运行顺序_详解python while 函数及while和for的区别
  10. 项目经理领导力提升与塑造:从自己干到团队干
  11. 圣诞Party将至!来来来,露一手用Python 抽奖
  12. android x86安装到硬盘不能启动,PC下安装androidx86一些问题的解决方法,gui start
  13. android新浪微博改进版
  14. 【大厂面试合集】每日一刷——5. 字节跳动飞书部门2022后端工程师实习真题
  15. 华为荣耀magic是鸿蒙系统,荣耀Magic3是什么系统-采用什么系统
  16. 21天Java开发速成篇-Java从入门到大师01快速入门
  17. 最新最全的手机号正则表达式及其他常用正则校验
  18. OSGi原理与最佳实践:第一章 OSGi框架简介(1)Equinox
  19. 2020年中国网络文学出海市场发展现状分析 海外主要通过手机APP
  20. 你不得不知道的xxx系列汇总(10.29更新)

热门文章

  1. 计算机两万字符英语文献翻译,求一篇2万字符以上的工程类外文文献及翻译
  2. can硬件滤波 stm32cubemx_[转载]STM32的CAN滤波器设置
  3. ISOLINUX: A bootloader for Linux using ISO 9660/El Torito CD-ROMs
  4. 源码编译构建安装内核kernel
  5. Linux内核深入理解定时器和时间管理(4):定时器 timer
  6. OpenStack:heat安装使用-Openstack Heat try-out
  7. mysql5.7过滤重复数据_MySQL5.7 设置同步复制过滤不用重启mysql服务进程了
  8. python爬虫基本原理_Python爬虫【一】爬虫的基本原理
  9. Idea设置多开窗口
  10. html 滤镜兼容,CSS3 中各种滤镜介绍和兼容性说明 - 文章教程