select rol1,rol2,dt from (select rol1,rol2,sysdate-rol_date dt from tbname order by dt asc) where rownum<10;
解决方案 »
- 关于在存储过程中使用参数作为插入数据条件时执行慢的问题……
- 安装时oracle9i出现的奇怪问题,
- 推荐一篇文章—oracle的事物隔离级别(isolation_level)
- 搞ORACLE开发有前途么?
- 安装oracle出现问题了
- oracle job 问题
- oracle测试成功 could not resolve the connect identifer specfied
- 如何给select查询返回的多条记录编号
- 1,在pl/sql中,如何知道连接的是哪个数据库?2,如何实现数据的输入?
- 求教SQL语句
- 100分求解一数据库创建问题,立刻兑现
- BLOB字段的数据如何使用select显示。
from (select x.*, rownum rno
from mytable x
order by mydate desc)
where rno < 11;
select /*+ INDEX_DESC (T1 INDEX_NAME) */,C1,C2,...
from T1
where rownum <= 10
from table1
where rownum < 11
order by date desc;
一个办法:使用oracle虚列rownum。对于一个查询所返回的每一行,rownum虚列都返回一个数值,这个数表示oracle从一个表或连接行的集合中选择此行的次序。被选择的第一行的rownum为1,第二行为2,依此类推。
例:返回行数限制为5
select ......
from ......
where rownum < 6;
还可在之后加上一个order by子句,那么返回的行将根据order by子句重新排序。但得到的结果的次序和在sql_sever中得到的次序是相反的,所以必须先强制排序然后再应用rownum条件,句法如下:
select empno,ename,job,mgr,hiredate,sal
from
(select empno,ename,job,mgr,hiredate,sal
from emp
order by nvl(sal,0) desc)
where rownum<6;
二:分析函数:rank()和drank() 区别:如果存在相同值,rank()会在所排的顺序中保留缺位。
例:select empno,ename,job,mgr,sal,
rank() over
(order by sal desc nulls last)as rank,
dense_rank() over
(order by sal desc nulls last)as drank
from emp
order by sal desc nulls last;
要获得一个top-n查询在子查询中使用rank()函数并在子查询外部运用筛选条件:
select empno,ename,job,mgr,hiredate,sal
from
(select empno,ename,job,mgr,hiredate,sal,
rank() over
(order by sal desc nulls last)as emp_rank
from emp
order by sal desc nulls last)
where emp_rank < 6;
一个办法:使用oracle虚列rownum。对于一个查询所返回的每一行,rownum虚列都返回一个数值,这个数表示oracle从一个表或连接行的集合中选择此行的次序。被选择的第一行的rownum为1,第二行为2,依此类推。
例:返回行数限制为5
select ......
from ......
where rownum < 6;
还可在之后加上一个order by子句,那么返回的行将根据order by子句重新排序。但得到的结果的次序和在sql_sever中得到的次序是相反的,所以必须先强制排序然后再应用rownum条件,句法如下:
select empno,ename,job,mgr,hiredate,sal
from
(select empno,ename,job,mgr,hiredate,sal
from emp
order by nvl(sal,0) desc)
where rownum<6;
二:分析函数:rank()和drank() 区别:如果存在相同值,rank()会在所排的顺序中保留缺位。
例:select empno,ename,job,mgr,sal,
rank() over
(order by sal desc nulls last)as rank,
dense_rank() over
(order by sal desc nulls last)as drank
from emp
order by sal desc nulls last;
要获得一个top-n查询在子查询中使用rank()函数并在子查询外部运用筛选条件:
select empno,ename,job,mgr,hiredate,sal
from
(select empno,ename,job,mgr,hiredate,sal,
rank() over
(order by sal desc nulls last)as emp_rank
from emp
order by sal desc nulls last)
where emp_rank < 6;
弱水和zip的做法估计速度会受影响的。
from table1
where rownum < 11
order by date desc;
black_snail(李刚)的方法似乎更合理,但是执行时找不到INDEX_DESC()函数,不知道是怎么回事。这个问题,以我的感觉,在oracle里没有好的办法,只能通过表结构的设计来解决。
bzszp(SongZip),KingSunSha(弱水三千)是正确地!
因为语句:select * from table1 where rownum<5 order by now_date desc
先执行rownum<5即前4条记录,在进行now_date排序!