Oracle 分页、取期间数据、TOP前几

Oracle没有 sqlserver的 top number 功能。只能以期间的形式实现

代码实现分页,参数curPage 当前页、pageSize 每页行数,计算出起始结束页码

int startPage = (curPage - 1) * pageSize + 1;
int endPage = curPage * pageSize;

如:当前第一页,每页10行得到   1,10

当前第二页,每页10行得到21,20

....

Oracle SQL写法

取  第一条到第十条数据(索引从1开始),同等于 TOP 10

select *
from (select t.*, rownum rn from sys_table t where rownum <= endPage )
where rn >= startPage

结果如下

select *
from (select t.*, rownum rn from sys_table t where rownum <= 10)
where rn >= 1

错误写法

select *
from (select t.* from sys_users t where rownum <= 10)
where rownum >= 1

时间: 2024-12-22 07:03:05

Oracle 分页、取期间数据、TOP前几的相关文章

sqlserver--获取同组数据的前两条记录

不啰嗦,直接上图,大概实现效果如下: 有上面这样一份数据,将他们按照userAccount和submitTime进行分组,然后提前每组数据的前两条记录 提取后数据如下: 实现的SQL如下: select t.* from (select *,row_number() over(partition by userAccount, submitTime order by submitTime) rn from demoTable) t where rn <=2 @[email protected]!

Oracle分页查询排序数据重复问题

在项目开发过程中大量的使用了分页查询,当想要让数据按照日期排序时,出现了很多重复的数据出现. 造成这一问题出现的原因是:在数据中,日期的值不是唯一的. 我们知道 Oracle的分页查询是没有进行任何排序操作的,Oracle是顺序的从数据块中读取符合条件的数据返回到客户端. 而Oracle的排序算法不具有稳定性,也就是说,对于键值相等的数据,这种算法完成排序后,不保证这些键值相等的数据保持排序前的顺序. 解决这一问题的方法就是在后边增加一个唯一性列,比如主键,问题解决. select * from

oracle中取前几条数据&amp;TRUNC()函数

在oracle中查表中的前10条数据---- select * from test where rownum <= 10 ;  rownum是把SQL出来的结果进行编号,始终从1开始,常见的用途就是用来分页.类似于MYSQL和SQL SERVER的top. select * from (select a.*,rownum rn from test a) where rn >=10 and rn<=20; 输出10到20条语句.因为rownum本身只能用<=的比较方式,只有转成实例才

oracle 分页查询数据重复问题

最近在做项目的时候发现一个问题,oracle 在查询分页数据的时候,有几条数据重复查询了,并且有几条数据在分页的时候消失了.百度了一下发现,ORACLE 在查询数据的时候返回的行不是固定的,他只是按照顺序从数据中读取符合条件的数据返回到客户端,给用户误解为默认排序. 然而,当我加上排序的时候,还是查询有重复的数据,(指第一页数据在第二页也查询出来了),这是我就疑问了,当我检查数据的时候,发现我排序的字段有空的情况,而且有很多条,导致排序返回的 伪列并不是唯一的. 总结: oracle 分页查询数

oracle 选取出现次数最多的前5条数据

SELECT * FROM ( SELECT PROJECT_LISTING.MATERIAL, COUNT (*) AS "出现次数" FROM PROJECT_LISTING WHERE PROJECT_LISTING.MATERIAL IS NOT NULL GROUP BY PROJECT_LISTING.MATERIAL ORDER BY COUNT (*) DESC ) WHERE ROWNUM <= 5 ORDER BY COUNT (*) DESC 是关键排序 C

Oracle 查询出来的数据取第一条

Oracle 查询出来的数据取第一条 --------------------------------------------------------------------------- 转载自:http://www.itpub.net/thread-246442-1-1.html select * from (select * from <table> order by <key>) where rownum=1; select * from (select * from &l

Oracle分组取第一条数据

看看以前的私密日志,原来自己之前被很多小而简单的问题困惑过! 看着那时候我们还是新手中的新手做的备忘笔记! 其实就是用了Oracle的统计函数而已! 以前的日记(看样子应该是以前公司的源码,呵呵--)如下:勿喷! 对多数据进行分组排序后取每组第一条记录: SELECT * FROM ( SELECT ROW_NUMBER() OVER( PARTITION BY ZA40011_3.URIAGE_DENPYO_NO,ZA40011_3.URIAGE_DENPYO_ROW_NO ORDER BY

Python开发简单爬虫之静态网页抓取篇:爬取“豆瓣电影 Top 250”电影数据

目标:爬取豆瓣电影TOP250的所有电影名称,网址为:https://movie.douban.com/top250 1)确定目标网站的请求头: 打开目标网站,在网页空白处点击鼠标右键,选择"检查".(小编使用的是谷歌浏览器). 点击"network",在弹出页面若长时间没有数据显示,则试一下F5刷新. 可以得到目标网页中Host和User-Agent两项. 2)找到爬取目标数据(即电影名称)在页面中的位置 右键"检查",选择"Elem

Oracle RAC环境实时数据迁移

系统要求及安装前的说明 Oracle GoldenGate可以在Oracle不同版本间移动数据,也可以在Oracle和其它类型数据库之间移动数据.Oracle GoldenGate支持数据的过滤.映射和转换.Oracle还能在相似的Oracle数据库之间复制DDL操作.注意下面一句:当DDL支持被激活的时候,Oracle GoldenGate不支持数据的过滤.映射和转换. 支持的Oracle数据库版本,从9.2开始支持DML和DDL.支持几乎所有的主流操作系统,具体的可以从MOS(My Orac