zoukankan      html  css  js  c++  java
  • mysql中join后on、where的区别

    SELECT * FROM A;

    SELECT * FROM B;

    以上是两张表的机构



    SELECT * FROM A LEFT JOIN B ON A.id=b.a_id ;

    语句一   :   SELECT * FROM A LEFT JOIN B ON A.id=b.a_id AND A.id <3;

    语句二:  SELECT * FROM A LEFT JOIN B ON A.id=b.a_id WHERE B.id <3;

    两个语句查询出来的结果是有差异的

    sql查询的关键字顺序为  from -> where -> group by-> having ->order by

    left join 是在from范围的所以先on条件筛选,然后再做left join

    而where是在left join的结果之后再次筛选

    语句一(等价于SELECT *FROM A LEFT JOIN (SELECT * FROM B WHERE B.id < 3) b2 ON A.id = b2.a_id;)

    1. 按照on后的条件筛选B.id<3
    2. 1中查询出的结果与A left join

    语句二

    1. 先left join 
    2. 然后再根据where条件再次筛选


    使用注意事项:

    1. ON后面的筛选条件主要是针对关联表的(对于主表的筛选条件不适用)
    2. 对于主表的筛选条件应该放在where后面,不应该放在ON后面
    3. 如果查询条件查询后才join连接应该把查询条件放在ON后面;如果要连接完毕后才筛选应该把条件放在where后面
    4. 对于关联表可以先做子查询再join
  • 相关阅读:
    C#:将子Form加入父Form中
    C#:简单线程样例
    C#:实现接口中定义的事件
    easyui设置界面的高度自适应
    JQuery
    vim常用命令(iOS)
    Linux的IO性能监控工具iostat详解
    php多线程抓取信息测试例子
    使用Gitosis搭建Git服务器
    CentOS 6.4 搭建git 服务器
  • 原文地址:https://www.cnblogs.com/dashuai01/p/9040945.html
Copyright © 2011-2022 走看看