或者什么SQL语句能把表中比如说最后五条、最后五条的前五条、最后五条的前五条的前五条...记录分别存到结果集中!

解决方案 »

  1.   

    jiezhi(西域浪子):你的方法太麻烦了,不能删除表.
      

  2.   

    楼上说得不错!你只能这样做,不是要你删除表,只是把表中的数据导一下而已!你要取最后五条、最后五条的前五条、最后五条的前五条的前五条...
    可以使用rownum来实现
      

  3.   

    rownum不行地。比如一共20条,我select id from table where id<20 and rownum<=5
    得到的结果是1至5条。也就是说从id<20的所有记录中从前面开始取五条,可是我想要取19到15条。如果加上order by id也只能得到5到1条。
      

  4.   

    现在不管怎么实现,总之,不能删除表;要得到某条记录(record)之前相邻的若干(n)条记录而且n的值小于record之前所有记录的总数。有什么好办法么?
      

  5.   

    不同导入另外一个表的做法,oracle存储记录没有物理顺序(记录号),导入另外一个表是多余的.
      

  6.   

    表要有一个唯一性字段如r1
    select * from table1 where rownum<20 and r1 no in (select r1 from table1 where rownum<15)
      

  7.   

    rrxxpp(ren) :
      已知的条件是:知道某条记录的唯一性字段的值。
      目标: 得到这条记录之前的n(比如n=5)条记录。  至于你提到的rownum<20,和rownum<15中的'20'和'15'都是不知道的!也就是说你不知道这条记录之前有多少条记录,也不知道这条记录是第几条。
      

  8.   

    可以用rownum实现,就是比较复杂,举个n=5的例子(只显示唯一性字段id,可以延伸推广)
    例子如下显示:
    select * from (select rownum rw,id from tab)
    where rw between
    (select rw1-5 from (select rownum rw1,id from tab) where id=指定值)
    and
    (select rw1 from (select rownum rw1,id from tab) where id=指定值);呵呵!OK!
      

  9.   

    我搞定了!
    比如要选择product_id=110之前的五条记录
    表名:e_user_product主键:product_id
    select product_id from e_user_product where product_id 
    in(
      select product_id from 
      (SELECT product_ID FROM e_user_product where user_id=3 and product_id<=110 order by product_id desc)
      WHERE ROWNUM <= 5
      )
    ORDER BY product_id desc;