marb 发表于 2013-1-13 18:30:13

各种数据库分页

在显示记录条目时往往要用到分页,一种常用的办法是利用各种数据库自带的定位接口对原始查询语句进行改写,从而只取出特定范围的某些记录。不同的数据库,查询定位接口是不一样的,下面做一汇总:
 
 数据库
 分页查询语句
 说明
 MySql
   "QUERY_SQL limit ?,?"             使用limit关键字,第一个"?"是起始行号,
  第二个"?"是返回条目数 Oracle
 SELECT * FROM
 ( SELECT A.*, ROWNUM RN   FROM 
 (QUERY_SQL ) A   WHERE ROWNUM
 <= ?) WHERE RN >= ?
 结合rownum关键字,利用嵌套三层select
 语句实现。第一个"?"表示终止行号,
  第二个"?"表示其实行号 Sql Server
 尚无通用语句 可使用top n来返回前n条记录或使用存储过程 DB2
 假设查询语句:select t1.* from t1 order
 by t1.id; 分页语句可为:
 "select * from ( select rownumber() over
  (order by t1.id) as row_, t1.* from t1
  order by t1.id) as temp_ where row_
  between ?+1 and ?"  返回两个"?"之间的记录 InterBase
 “QUERY_SQL row ? to ?”  返回两个"?"之间的记录 PostgreSQL “QUERY_SQL limit ? offset ?”  第一个"?"为起始行号,第二个"?"代表
  返回记录数
页: [1]
查看完整版本: 各种数据库分页