SQL> select * from a;ID   ST C  D
---- -- -- ----
11   2  19 48
12   2  29 58
13   2  39 68SQL> select * from b;ID   ST C  D
---- -- -- ----
19   11 y  48
29   11 n  48
39   11 y  48
119  12 y  58
129  12 n  58
139  12 y  58已选择6行。SQL> SELECT * from a where
  2  a.id=(
  3  select b.status from b where b.id=(
  4  SELECT MAX(B.ID) FROM A,B WHERE B.STATUS=A.ID(+) and B.C='y')
  5  );ID   ST C  D
---- -- -- ----
11   2  19 48SQL>

解决方案 »

  1.   

    好象pl/sql里不能识别分号";",所以你的语句在pl/sql里执行会报错。
      

  2.   

    最好写出你的pl/sql过程,来判断
      

  3.   

    我只是在pl/sql的command window测试,没有用到过程。
     bzszp(SongZip) 兄你上面的已经得出结果了,但是我还是没确定你在这个问题的原始出处:http://expert.csdn.net/Expert/topic/2378/2378162.xml?temp=.3503076
    里的回贴是否也是正确的,如果不正确,而且提示:“ORA-00907: 缺少右括号”又是什么原因呢?恳请答复,谢谢。
      

  4.   

    TO:zhangleon714() 
    我只是在pl/sql的command window测试,应该和“;”没有关系
      

  5.   

    bzszp(SongZip)兄写的: SELECT * FROM A WHERE A.ID=(SELECT MAX(B.ID) FROM A,B WHERE B.STATUS=A.ID(+) WHERE B.C='Y');SQL规则里面可以有两个Where条件语句吗,如果可以那我又学到一招了:)
      

  6.   

    请问PL/SQL的运行工具不是sql*plus吗?对你的这句话不太理解“在pl/sql里运行错误,但在sql*plus里正确”
      

  7.   

    To:wangcm(雨竹):所以这就是一个问题了嘛。
    To: bzszp(SongZip): 那个贴得分好高啊,不过还好我弄明白了。谢啦!