请问高手,oracle中on和where有什么区别啊,
如select * from  test_report  r right join test_code c on c.type='StoppageType'; 正确通过
当把on换成where时:
select * from  test_report  r right join test_code c wherec.type='StoppageType'; oracle居然报ORA:00905-缺少关键字,请问是什么原因啊?

解决方案 »

  1.   

    select * from  test_report  r right join test_code c wherec.type='StoppageType'; 
    这样也能通过么?
      

  2.   

    你用right join 后必须用on去连接俩表的共同部分,如果要写过滤条件,在后面写where就行
    写过几次你就明白了
      

  3.   

    但是select * from  test_report  r right join test_code c on c.type='StoppageType'; 这条语句并没有两张表的共同部分啊,我只是筛选test_code中type字段的为StoppageType,为什么也能通过?
      

  4.   

    看看标红的  where和条件 挨着的呀  不能识别关键字
      

  5.   

         on 是sql99的语法,出现left join,join这些,必须后面带on 条件关联。
      

  6.   

    少了ON关键字
    一定要写WHERE
    那就
    select * from  test_report  r 
    right join 
    test_code c 
    ON 1=1 wherec.type='StoppageType'; 
      

  7.   

    on 是表关联用的,where是过滤条件用的。