如何找出最新插入的一条数据
由于oracle没有select top n的语句,就用了这条语句:
select group_id,rownum from 
  (select  group_id,rownum from SDCD.ZDWIP_JOB_GROUP  order by group_id desc)
where rownum< 2
却提示缺省右括号,哪位兄弟帮帮忙啊????

解决方案 »

  1.   

    select group_id,rn from  
      (select group_id,rownum  rn from SDCD.ZDWIP_JOB_GROUP order by group_id desc)
    where rn< 2按上面的语句改
      

  2.   


    select group_id,rn from 
    (select group_id,rownum rn from SDCD.ZDWIP_JOB_GROUP order by group_id desc) a
    where rn< 2
      

  3.   

    你在什么环境执行的
    SQLPLUS? 还是sql dev工具里?
      

  4.   

    plsql developer
    发现问题的原因了:rownum不是一个固定的值,
      

  5.   

    比如
    select group_id,rownum rn,rowid
     from SDCD.ZDWIP_JOB_GROUP
    group_id   rn
    83016      1
    83016      2
    83016      3
    83016      4
    83017      5
      当我只选出group_id为83017的值时,rn却变成了1
    select group_id,rownum rn,rowid
     from SDCD.ZDWIP_JOB_GROUP
    where group_id=83017
    group_id   rn
    83017      1
      

  6.   

    select group_id,rn from 
    (select group_id,rownum rn from SDCD.ZDWIP_JOB_GROUP order by group_id asc) a
    where rn< 2
      

  7.   

    SQLSERVER中,如果TOP关键字和ORDER BY关键字一起出现,是先ORDER BY 后再TOP。
          也就是说:取得最前面的几条记录是经过排序的。
    RACLE中,如果使用WHERE rownum<=N和ORDER BY一起出现的话,
         ROWNUM优先于ORDER BY。也就是说,ORDER BY无法对所有满足条件的记录排序,
         只能对当前的rownum<=N中的N条记录排序。
      

  8.   


    --如果你非要用rownum的话,那么只能加一层子查询了
    select * from (select ....order by group_id desc) where rownum < 2
      

  9.   

    小问题  确实是你们都错了  rn和外套的查询一行有关系么  没关系呀 rn只是属于内层的值 外层要查询一行自然是外层添加rownum< 2  如果内层不用标识rn 俩rownum会混淆  系统识别不了 
    这样试试select group_id,rn from  
    (select group_id,rownum rn from SDCD.ZDWIP_JOB_GROUP order by group_id desc) 
    where rownum< 2
      

  10.   

    如果要最后一条插入数据 也不用这么做呀  直接查询最大id就可以咯
    select * 
    from SDCD.ZDWIP_JOB_GROUP
    where group_id=(select max(group_id) from SDCD.ZDWIP_JOB_GROUP)
      

  11.   

    帮你试了一下 我这边可以
    不行就用max(rowid)吧,rownum不是很好用,大于号都没作用
      

  12.   

     我来回答你的这个“ 当我只选出group_id为83017的值时,rn却变成了1
    ”。在oracle中 rownum不是表中已经提前定义好的列,它是在查询的过程中动态生成的数据。oracle文档中说:The first row selected has a ROWNUM of 1, the second has 2, and so on。所以,你懂了吗?