数据库分页代码
Posted 一棵小草77
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库分页代码相关的知识,希望对你有一定的参考价值。
select * from table limit 0,10; -- 查询10条记录,0-开始位置,1-结束位置,注:从0开始
oracle:
第一种(利用rownum伪列进行查询): SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 20 ) WHERE RN >= 10; 第二种: select * from (select e.*,rownum r from (select * from emp order by sal desc) e ) e1 where e1.r>10 and e1.r<=20;
Sql Server:
第一种(利用Not In和SELECT TOP分页): SELECT TOP 10 * FROM TestTable WHERE (ID NOT IN (SELECT TOP 20 id FROM TestTable ORDER BY id)) ORDER BY ID SELECT TOP 页大小 * FROM TestTable WHERE (ID NOT IN (SELECT TOP 页大小*页数 id FROM 表 ORDER BY id)) ORDER BY ID 第二种(利用ID大于多少和SELECT TOP分页): SELECT TOP 10 * FROM TestTable WHERE (ID > (SELECT MAX(id) FROM (SELECT TOP 20 id FROM TestTable ORDER BY id) AS T)) ORDER BY ID SELECT TOP 页大小 * FROM TestTable WHERE (ID > (SELECT MAX(id) FROM (SELECT TOP 页大小*页数 id FROM 表 ORDER BY id) AS T)) ORDER BY ID 第三种(利用SQL的游标存储过程分页): create procedure XiaoZhengGe @sqlstr nvarchar(4000), --查询字符串 @currentpage int, --第N页 @pagesize int --每页行数 as set nocount on declare @P1 int, --P1是游标的id @rowcount int exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output select ceiling(1.0*@rowcount/@pagesize) as 总页数--,@rowcount as 总行数,@currentpage as 当前页 set @currentpage=(@currentpage-1)*@pagesize+1 exec sp_cursorfetch @P1,16,@currentpage,@pagesize exec sp_cursorclose @P1 set nocount off
以上是关于数据库分页代码的主要内容,如果未能解决你的问题,请参考以下文章
TP5报如下的错误 Indirect modification of overloaded element of thinkpaginatorCollection has no effect(代码片段