oracle不支持top
但可以
select * from test where rownum <= 5 minus select * from test where rownum <= 7
但可以
select * from test where rownum <= 5 minus select * from test where rownum <= 7
解决方案 »
- ogg奇怪的问题 goldengate同步无反应,不成功,ggserr.log也没有报错日志,进程不abended
- 请高手帮忙装下oracle语句
- 请高手过来进来,希望用简单点的语句帮我解决!
- 求toad for oracle使用教程
- 一个SQL语句
- 关于Oracle 8.16 SQl Plus 登录问题
- 救急:有谁能提供ORACLE关于RMAN使用的电子文档?没用过,非常需要!!
- 如何将Excel数据导入Oracle?
- 如何实现ORACLE8.1.6自增字段的问题
- 如何在大型数据表(百万条记录以上)中快速访问及操作数据库记录,如何实现?
- oracle中是否有判断全角空格的函数?
- 如何把查询到的多条数据插入到一个新表中??
select * from can_jsk where rownum <= 7 minus select * from can_jsk where rownum <= 5
select * from tablename where rownum != 10;返回的是前9条记录。
不能用:>,>=,=,Between...and。由于rownum是一个总是从1开始的伪列,Oracle 认为这种条件 只能用
select *
from table_name
where rownum < N
minus
select *
from table_name
where rownum < M就可以选中 M 与 N之间的。rownum是伪列,代表已经查询到的记录的行序号。还未查到的记录是没有rownum的。
因此ROWNUM>=1 AND ROWNUM<=10是可以查到前10条记录但是不能证明
ROWNUM>=500 AND ROWNUM<=600可以查处500~600的501条记录。
ROWNUM>=1 AND ROWNUM<=10在逻辑上相当于ROWNUM<=10
正确的方法是:
select * from (select Z_YXJK_DMDH.*, rownum as rid from Z_YXJK_DMDH where rownum<=600) where rid > 500
或者
select * from Z_YXJK_DMDH where rownum<=600
minus
select * from Z_YXJK_DMDH where rownum<=500
在效率上推荐前一种
只能用(<、<=、!=)。
试试这个select a.* from(
select a.*,row_number() over (order by rowid) row_num from test
) a
where row_num >= 5 and row_num <= 7
where rownum <= 7 minus select * from IEXRTp00 where rownum <= 4