日期:2014-05-16  浏览次数:20425 次

主流数据库的分页查询语句

mysql数据库

select * from ICM_CERT where 0=0 and ... and ...  limit  pagesize*curPage,pagesize

?pagesize*curPage为查询的起始位置,pagesize为每页条数即从 pagesize*curPage开始查询pagesize条记录。

?

?

SqlServer数据库

方法1:
适用于 SQL Server 2000/2005
SELECT TOP 页大小 * FROM table1 WHERE id NOT IN (
 SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
 )ORDER BY id
方法2:
适用于 SQL Server 2000/2005
SELECT TOP 页大小 * FROM table1 WHERE id >(
SELECT ISNULL(MAX(id),0)  FROM  (
SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id) A
)ORDER BY id
方法3:
适用于 SQL Server 2005
SELECT TOP 页大小 * FROM  ( SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,*  FROM table1) A
WHERE RowNumber > 页大小*(页数-1)
说明,页大小:每页的行数;页数:第几页。使用时,请把“页大小”和“页大小*(页数-1)”替换成数字。

?

Oracle数据库

SELECT * FROM (SELECT ROWNUM r,t1.* From 表名称 t1 where rownum < M + N) t2  where t2.r >= M

其中M起始插寻位置,N为每页条数

?

?

1 楼 85600367 2011-01-12  
oracle 当数据量大的时候这种分页就不能用了 一般都用存储过程了
因为rownum 本身就是全表扫描后得到的 速度不可能快的
2 楼 nzm918 2011-01-12  
85600367 写道
oracle 当数据量大的时候这种分页就不能用了 一般都用存储过程了
因为rownum 本身就是全表扫描后得到的 速度不可能快的

存储过程实现分页这么做? 能指点一下吗 我还比较菜 只会这种笨方法