|
if ( 鄙视用sql语句 and 不屑oracle ) { break; } 经常有人问起关于数据库端分页的问题,包括利用存储过程之类的方法有很多,今天我尝试着利用一个更简单的方法来处理一下,就是抽出按某种方式排序的记录集中的第M条记录开始的X条记录,也就是在SqlServer里面的select top的方法。首先说明一下的是我用的数据库是oracle,但是原理差不多。 由于ORACLE不支持SELECT TOP语句,所以在ORACLE中经常是用ORDER BY跟ROWNUM RECNO的组合来实现SELECT TOP N的查询。 我们知道,ROWNUM RECNO是记录表中数据编号的一个隐藏子段,(根据用户查询的结果,自动由1到N编号)所以可以在得到TOP N条记录的时候同时抽出记录的ROWNUM,然后再从这N条记录中抽取记录编号为M的记录,即使我们希望得到的结果。 在得到了TOP N的数据之后,为了抽出这N条记录中的第M条记录,我们可以考虑从ROWNUM着手。我们知道,ROWNUM是记录表中数据编号的一个隐藏子段,所以可以在得到TOP N条记录的时候同时抽出记录的ROWNUM,然后再从这N条记录中抽取记录编号为M的记录,即使我们希望得到的结果。 那么其语法就很简单了: SELECT 列名1...列名n FROM ( SELECT ROWNUM RECNO, 列名1...列名nFROM ( SELECT 列名1...列名n FROM 表名 ORDER BY 列名1...列名n) WHERE ROWNUM <= N (N >= (M + X - 1)) ORDER BY ROWNUM ASC ) WHERE RECNO BETWEEN M AND (M + X - 1) 从以上语法可以知道,这个时候只需要得到M和X就可以完成使用sql语句来进行分页。 /分割线,对于只需要知道怎么做,不需要知道原理的同学,上面的就是废话了// 下面具体实现: 为了得到M和X,我们必须要在store里面定义,让store来触发分页
由于开头我说过,是用sql语句来做的,所以要想办法得到一条sql语句:
|
store 的数据库端分页
转载
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
数据库分页
select B.r,B.* from ( select A.*, rownum as r from ( select rown
Oracle oracle 数据库分页 ci -
通用的数据库分页
通用的数据库分页实现。
数据库 通用 -
MySQL数据库分页实现 mysql数据库分页查询
具体实现中,根据所用数据库、数据量、实现分页方式,选择分页实现快的方式实现。
MySQL数据库分页实现 MySQL 分页查询 字段
















