DB2分页查询,结果集大小,ROW_NUMBER OVER

本文介绍了在DB2数据库中实现高效分页查询的方法。通过使用ROW_NUMBER() OVER() 函数结合WHERE子句,实现了从大量数据中快速获取指定位置之后的数据记录。文章详细展示了正确的SQL语句构造过程,并解释了常见错误的原因。

数据库某表中有1533113条数据,但是我想查看最新的几条,输入select * from Table,执行1分多后,返回个内存不足的错误(Out of memory. Partial results returned.)

于是乎,上网找关于db2的分页查询.找到row_number() over()函数和fFETCH FIRST n ROWS ONLY,由于后者是查询前多少行(没有专业书籍,也许有对立语句),所以不使用了.现在介绍前者:

使用方法:

将 ROW_NUMBER() OVER() 子句与谓词一起用于 where 子句中。示例:

SELECT * FROM TABLE
--Out of memory. Partial results returned.
SELECT row_number() over() AS ROW_NUM FROM TABLE WHERE ROW_NUM > 1533013
-- SQL0206N  "ROW_NUM" 在使用它的上下文中无效。  SQLSTATE=42703
SELECT * FROM (SELECT row_number() over() AS ROW_NUM FROM TABLE) WHERE ROW_NUM > 1533013 
-- SQL0104N  在 ")" 后面找到异常标记 ""。预期标记可能包括:"AS"。  SQLSTATE=42601
SELECT * FROM (SELECT row_number() over() AS ROW_NUM FROM TABLE) AS t WHERE ROW_NUM > 1533013 
--ROW_NUM
SELECT * FROM (SELECT row_number() over() AS ROW_NUM,* FROM TABLE) AS t WHERE ROW_NUM > 1533013
-- SQL0104N  在 ") over() AS ROW_NUM," 后面找到异常标记 "*"。预期标记可能包括:"<select_sublist>"。  SQLSTATE=42601
SELECT * FROM (SELECT row_number() over() AS ROW_NUM,s.* FROM TABLE AS s) AS t  WHERE ROW_NUM > 1533013
终于得到想要的结果集.分享ing
OVER()中间可以带排序方法ORDER BY xxx DESC(ASC) 等等

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值