zoukankan      html  css  js  c++  java
  • mysql left join中where和on条件的区别

    left join中关于where和on条件的几个知识点:

    多表left join是会生成一张临时表,并返回给用户

    • where条件是针对最后生成的这张临时表进行过滤,过滤掉不符合where条件的记录,是真正的不符合就过滤掉。
    • on条件是对left join的右表进行条件过滤,但依然返回左表的所有行,右表中没有的补为NULL
    • on条件中如果有对左表的限制条件,无论条件真假,依然返回左表的所有行,但是会影响右表的匹配值。也就是说on中左表的限制条件只影响右表的匹配内容,不影响返回行数。

    结论:

    • 对左表限制只能放到where条件,不能放到on后面(否则:无论条件真假,依然返回左表的所有行,但是会影响右表的匹配值)
    • where条件中对右表限制,放到on后面,会有数据行数差异,比原来行数要多

    left join 关联inner join 使用:

    select * from A a
    left join B b
    on a.id=b.id
    inner join C c
    on c.name = b.name

    如果A表中有100条数据,B表和A表关联上50条数据,那么返回总数据条数为100条,其中50条B表中数据为null,此时B表inner join C表,如果关联匹配数据为0条,那么返回总条数不变还是100条,其中B表和C表数据全部为null

  • 相关阅读:
    uva 11078
    hdu1520(树状dp)
    从Markov Process到Markov Decision Process
    剑指Offer系列编程题详解全集
    L1正则和L2正则的区别详解
    协方差详解
    牛顿法和梯度下降法的比较
    C++ const各种用法总结
    Exploration and Exploitation
    RL Algorithm Components
  • 原文地址:https://www.cnblogs.com/blwy-zmh/p/11805739.html
Copyright © 2011-2022 走看看