首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

oracle 取当前数据的前N条记录解决方案

2013-12-10 
oracle 取当前数据的前N条记录如题,一个简单的表,查询当前记录的前N条满足条件的记录,比如,表有10记录,页

oracle 取当前数据的前N条记录
如题,一个简单的表,查询当前记录的前N条满足条件的记录,比如,表有10记录,页面传过来一条记录的ID=8,现在去ID=8记录的前3条满足条件的记录,下面这种不行

      select T.ID,T.VERSION  ,T.TITLE  ,T.CONTENT ,T.INDEX_KV  
          ,T.CONTENT_PIC  ,T.RECOMMEND_TYPE,T.RECOMMEND_PIC  
          ,T.RECOMMEND_URL  ,T.PAST_PIC  ,T.SHARE_CONTENT  ,T.SHARE_PIC  
          ,T.CREATE_DATE  ,T.IS_DELETED  ,T.STATE  ,T.GOOD_FLAG, T.BAD_FLAG,T.PAST_BIG_PIC
  from 
(select rownum rwno, a.* from flagshop_diagram a where  a.is_deleted = 0 and a.state=1 order by id) t
where rwno > 8-4 
and rwno < 8
,等大神解决,新手,没多少分。。。。。
[解决办法]
引用:
如题,一个简单的表,查询当前记录的前N条满足条件的记录,比如,表有10记录,页面传过来一条记录的ID=8,现在去ID=8记录的前3条满足条件的记录,下面这种不行
      select T.ID,T.VERSION  ,T.TITLE  ,T.CONTENT ,T.INDEX_KV  
          ,T.CONTENT_PIC  ,T.RECOMMEND_TYPE,T.RECOMMEND_PIC  
          ,T.RECOMMEND_URL  ,T.PAST_PIC  ,T.SHARE_CONTENT  ,T.SHARE_PIC  
          ,T.CREATE_DATE  ,T.IS_DELETED  ,T.STATE  ,T.GOOD_FLAG, T.BAD_FLAG,T.PAST_BIG_PIC
  from 
(select rownum rwno, a.* from flagshop_diagram a where  a.is_deleted = 0 and a.state=1 order by id) t
where rwno > 8-4 
and rwno < 8
,等大神解决,新手,没多少分。。。。。

将你的满足条件的全部记录作为一个子查询。然后加上条件ROWNUM<N不行吗
[解决办法]
你不是去满足条件的前三条么?
select * (select * from table where ... order by id ) where rownum<=3
[解决办法]
内查询换成以下即可:

select row_number() over (order by id) rwno
    , a.* 
from flagshop_diagram a
where  a.is_deleted = 0
    and a.state=1

热点排行