select * from a left join b on a.id=b.uid where a.id>2

select * from a left join b on a.id=b.uid and a.id>2
有什么区别?
求大神指点

解决方案 »

  1.   

    参考此文http://blog.csdn.net/xiongshao1943/article/details/51693159
      

  2.   

    参考这个sql执行顺序  http://www.cnblogs.com/rollenholt/p/3776923.html
      

  3.   

    select * from a left join b on a.id=b.uid where a.id>2

    select * from a left join b on a.id=b.uid and a.id>2
    有什么区别?
    有区别的,写在where后面会少很多记录的。
      

  4.   

    有区别
    --记录数
    第1显示a表id>2的记录 
    第2显示a表所有记录
      

  5.   

    select * from a left join b on a.id=b.uid where a.id>2
    select * from a left join b on a.id=b.uid and a.id>2这两句a左连接b时是没有区别的,反过来则有很大区别了。——远离 深圳市前海博纳斯科技有限公司 这家毫无信用欺诈工资的垃圾公司!
      

  6.   

    select * from a left join b on a.id=b.uid where a.id>2
    -- a.id>2 作用在a表中的数据,只会显示满足条件的记录select * from a left join b on a.id=b.uid and a.id>2
    -- a.id>2 作用是b表中的数据,查询出来的还是a的全部数据因为是left,只不过b表中不满足的数据没有了
      

  7.   

    此例从结果上看没区别
    A left join B on C where D
    执行步骤
    1. 计算AB的笛卡尔积
    2. 筛选出符合C的
    3. 给B补NULL
    4. 筛选出符合D的