有一个表app,字段有 appln_no, appln_date, applncnt_name
三个字段合起来为primary key,假设已知一个appln_no, 我要求出最latest(appln_date 最大的)record.例如, appln_no = 'G1234F'数据库里可能是这样:          appln_no            appln_date          applncnt_name
          G1234F               20051001           duck
          G1234F               20051101           duck
          G1234F               20051201           duck我给出G1234F, 要得到就是上面第三个record, (G1234F,  20051201, duck)我的sql 这样写
select * 
from app
where appln_no = 'G1234F'
and appln_date = (select max(appln_date) from app where appln_no = 'G1234F') 可以拿到我想要得纪录,但我觉得这个sql语句写得有些傻,哪位高手指点一下, 谢谢

解决方案 »

  1.   

    select * 
    from app
    where appln_date = (select max(appln_date) from app where appln_no = 'G1234F')
      

  2.   

    select appln_no, max(appln_date), applncnt_name from app
    where appln_no = 'G1234F'
      

  3.   

    select *
    from(
    select * 
    from app
    where appln_no = 'G1234F'
    order by appln_date desc
    )
    where rownum = 1
      

  4.   

    谢谢,
    我觉得  sinusoid 的答复有逻辑错误,你写的sql 不能保证拿到的纪录的appln_no 是'G1234F'
    而 chyf212 的 答复应该有语法错误,xluzhong(Ralph)的方法我试了ok, 但是我查了一下,好像rownum 不能保证很准确,我不是太清楚, anyway, 谢谢你们!!!
      

  5.   

    sorry,  我又查了一下,xluzhong(Ralph)的方法很ok, 非常感谢,我结分了
      

  6.   

    看数据情况,xluzhong(Ralph)的方法,有可能效率很低啊。