有2个问题请教高人1,on 和WHERE 同是用的时候为什么条件写错为了会不对啊?ON 和WHERE 的区别、?
2 为什么  FROM A JOIN B  on/where A.C(这个为什么会报错)  ,b.c(这个就是对的)

解决方案 »

  1.   

    数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。
    在使用 on和where条件的区别如下:
    1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回表中的记录。
    2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有join的含义(必须返回表的记录)了,条件不为真的就全部过滤掉。
      

  2.   

    on 条件是用于外键连接,where 条件是用于筛选纪录.
    on可适用于多条记录,asp批量处理时候常用.where常见于单条记录读取查询.
    而且on一般跟join连用的,where是条件语句
      

  3.   

    因为on,where在实际执行顺序上有区别的:SQL的逻辑查询处理执行顺序
    Transact-SQL语言是基于集合(set-based)查询的语言。
    在实践中,查询的实际物理处理可能与逻辑处理有很大不同。
    1、FROM 
    2、ON
    3、JOIN--做笛卡尔乘积
    4、WHERE
    5、GROUP BY
    6、WITH(cube | rollup )
    7、HAVING
    8、SELECT 列表
    9、DISTINCT
    10、ORDER BY
    逻辑查询处理的步骤序号:
    (8) SELECT (9) DISTINCT (11) <TOP_specification> <select_list> 
    (1) FROM <left_table> 
    (3) <join_type> JOIN <right_table> 
    (2) ON <join_condition> 
    (4) WHERE <where_condition> 
    (5) GROUP BY <group_by_list>
    (6) WITH {CUBE | ROLLUP} 
    (7) HAVING <having_condition> 
    (10) ORDER BY <order_by_list>
    仅供参考
      

  4.   

    如果是join 是没有区别的
    但是left join right join 是有区别的。
      

  5.   

    楼上的朋友谢谢你们了。。我知道什么意思了。。A JOIN B ON A.X=B.X ,JOIN C ON A.X=C.X WHERE
    条件
    3个以上的多表查询的时候 on里面写的条件我觉得最主要的就是建立一个同等的条件,如果写在WHERE 里面会出错。。