当在INNER JOIN加条件时在ON后面A.ID=B.ID AND A.ID=1和INNER JOIN加条件时在ON后面A.ID=B.ID WHERE A.ID=1有什么区别

解决方案 »

  1.   

    一样的.非innter joion 才有区别
      

  2.   

    平时写有时候写on 有时候写where,不觉得有什么不同
      

  3.   

    执行结果完全相同
    但是个人认为写成inner join on A.ID=B.ID and A.ID=1这样的执行效率会比较高一些
    在A.ID=B.ID WHERE A.ID=1这种情况下where语句会在连接后的结果集中进行筛选,而第一种情况下筛选是在连接之前执行的,在记录很多的情况下会看出不同不知道我的理解对不对:)
      

  4.   

    有不同的。
    create table ta(
    kno int primary key,
    c1 int)
    create table tb(
    kno int primary key,
    c2 int)
    insert into ta(kno,c1) select 1,100 union select 2,90
    insert into tb(kno,c2) select 1,70 union select 3,null
    用select ta.kno,ta.c1,tb.c2
    from ta left join tb 
    on ta.kno=tb.kno會得到兩條記錄
    用select ta.kno,ta.c1,tb.c2 from ta,tb
    where ta.kno=tb.kno只有一條記錄
      

  5.   

    楼上的,非inner join肯定有区别的我也认为where是join后对结果进行过滤,on是对表过滤
      

  6.   

    同意 'jxwangjm(师铭)' 的
    在查询优化时
    一般都遵循先投影,再选择,再联结
    因为联结所号时间资源是最大的
    而INNER JOIN 是:
    再联结的同时进行选择,
    也就是 扫描表1的每一条记录,然后在表二中筛选满足条件的记录加入最终表,
    而用 WHERE 的话
    数据库是:扫描表1的每一条记录,同时将表二中所有的记录加入最终表,
    然后再根据WHERE 的条件进行筛选,耗时间和 空间资源都比INNER JOIO 大的多!!!
    强调一条,在数据库里,比较2记录一次比合并2记录一次花的时间要小的多!
      
     
      

  7.   

    有區別的.建議將條件加在on中,如果加在where中,效率低了不說,還會出現意想不要的效果.