+ -
当前位置:首页 → 问答吧 → 一个简单的问题

一个简单的问题

时间:2011-09-23

来源:互联网

如何选择一个表中前面5行数据和后面5行数据呢?rownum好像不行啊?怎么用呢?

作者: zhoulirong14   发布时间: 2011-09-23

SQL code

select *
  from (select t.*, 
               row_number() over(order by empno) as r1,           -- 顺序
               row_number() over(order by empno desc) as r2       -- 倒叙
          from emp t)
 where r1 <= 5 or r2 <=5
 order by empno;


作者: opps_zhou   发布时间: 2011-09-23

SQL code
rownum可以实现,只不过要用子查询来实现,因为rownum是不可以直接用<n(n>1)

不过如果在外面用一层子查询就可以了阿
select * from (select id,name, rownum rt from table order by id) where rt <=5
union all
select * from (select id,name, rownum rt from table order by id desc) where rt <=5

--ps:如果有不足10条数据的情况,可以使用union 去掉重复数据

作者: lxyzxq2008   发布时间: 2011-09-23

SQL code

原数据是:1-20
select rn 
from
(       
     select rownum rn from dual connect by rownum<21
)
where rn<6 or rn>15

--结果显示:
1    1
2    2
3    3
4    4
5    5
6    16
7    17
8    18
9    19
10    20


作者: cosio   发布时间: 2011-09-23

select top 5 * from tb
union all
select top 5 * from tb
order by id desc

作者: areswang   发布时间: 2011-09-23

引用 4 楼 areswang 的回复:
select top 5 * from tb
union all
select top 5 * from tb
order by id desc


不能直接ORDER BY

作者: areswang   发布时间: 2011-09-23

引用 4 楼 areswang 的回复:
select top 5 * from tb
union all
select top 5 * from tb
order by id desc


ORACLE没有TOP的功能!

作者: cosio   发布时间: 2011-09-23

热门下载

更多