SQl server分页:
select top 10 * form table1 where indexID not in (select top 20 indexID from table1 )
Oracle分页:
select * from(select rownum r,* from(select * from table1) where rownum<20) where r>10
MySQL分页
select * from tablename limit 5,10--返回第5至10条记录
MSSQL通用存储过程分页
以下是在网上搜索到的一个MS SQL存储过程分页的示例. 由于采用了游标,故效率会低一些,但是比较通用. 适合一些需要快速开发的小项目.
测试:15万条数据,用时1s.
--=====调用示例====
declare @str varchar(200);
set @str = ''select * from t_user order by id''
exec pagination @str,4,2
--=====存储过程======
alter procedure pagination
@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
declare @totalPage int --总页数
set @totalpage = ceiling(1.0*@rowcount/@pagesize)
--判断当前页是否大于总页数,如果大于总页数.当前页就是最后一页
if (@currentpage>=@totalpage)
set @currentpage = @totalpage
if(@currentpage<1) --如果当前页小于1,则默认当前页是1
set @currentpage=1
print ''当前页''
print @currentpage
select @totalpage as 总页数,@currentpage as 当前页 ,@rowcount as 总记录数--,@rowcount as 总行数,@currentpage as 当前页
declare @begin int --从哪条记录开始的
set @begin = (@currentpage-1)*@pagesize+1
exec sp_cursorfetch @P1,16,@begin,@pagesize
exec sp_cursorclose @P1
set nocount off
数据库分页
最新推荐文章于 2024-09-15 08:03:51 发布