select b.c2
 from 
(
SELECT BB.C2
FROM A LEFT OUTER JOIN B (AA.A1 = BB.A2)
WHERE AA.A1 = 'aa1'
ORDER BY AA.A2 DESC
) b
where rownum<2

解决方案 »

  1.   

    用子查询是不是会影响性能?“rownum”是标准sql吗?我用的数据库不是oracle
      

  2.   

    rownum不是标准sql.据我所知,sqlserver,db2 dbms都没有这个东西。你用的是什么DBMS?
    既然不是oracle,那个sql就不对了。得重写了。
      

  3.   

    SymfoWARE,最好用标准sql,谢谢了
      

  4.   

    select * from (select c2 from aa,bb where a1=a2 and a1='aa1' order by b2 desc) where rownum<=1
      

  5.   

    因为你用到排序了,证明你的表序列关系 你可以试一下MAX()
    SELECT MAX(BB.C2)
    FROM AA LEFT OUTER JOIN BB (AA.A1 = BB.A2)
    WHERE AA.A1 = 'aa1'
    ORDER BY AA.A2
      

  6.   

    SELECT BB.C2
    FROM A LEFT OUTER JOIN B (AA.A1 = BB.A2)
    WHERE AA.A1 = 'aa1'
    ORDER BY AA.A2
    ------------------------------------------
    only need a max function,
    ------------------------------------------
    select max(BBC2)from(SELECT BB.C2           as BBC2FROM A LEFT OUTER JOIN B (AA.A1 = BB.A2)
    WHERE AA.A1 = 'aa1'
    ORDER BY AA.A2)
      

  7.   

    可BB.C2的类型是字符串(其他的也都是),不能用MAX吧?
      

  8.   

    SymfoWARE 支持 cursor的话,用cursor只fetch一次。