• 联表查询用on和where的区别


    使用left join 时,on和where的条件的区别如下

    • on条件是在生成临时表时使用的条件,不管on中的条件是否为真,都会返回左表中的记录。
    • where条件是在临时表生成好后,在对临时表进行过滤条件,条件不为真的就全部过滤。

    案例:

    • select * from tab1 left join tab2 on tab1.size = tab2.size where tab2.name = "AAA"
      • on 条件:  tab1.size = tab2.size,得到4条笛卡尔积记录
      • 再对中间表where过滤:    tab2.name = "AAA",得到1条匹配记录

        

    • select * from tab1 left join  tab2 on tab1.size = tab2.size and tab2.name = "AAA"
      • on 条件:     tab1.size = tab2.size and tab2.name = "AAA" (条件不为真也会返回左表记录,得到3条左表记录)

        

    使用left join,right join,full join都跟left join一样,而inner join 放on和where都返回一样的结果集。

    以上参考:https://mp.weixin.qq.com/s/0nVERgSxwK3-DkkrTFV37w

  • 相关阅读:
    PyQT_Group
    单例模式演示-1-39-07
    RSqlBuilder
    RExcel
    RJson
    NodeJs开发目录
    NodeJs事件驱动
    NodeJs实用工具util
    NodeJs之global,process
    NodeJs两个简单调试技巧
  • 原文地址:https://www.cnblogs.com/smallzhen/p/14664431.html
Copyright © 2020-2023  润新知