Oracle,MySql,SQL server分页
给学生讲到了JSP里简单的分页,学生会问每种数据库分页的不同,现总结如下 ¬
SQL Server ¬
从数据库表中的第M条记录开始取N条记录,利用Top关键字:注意如果Select语句中既有top,又有order by,则是从排序好的结果集中选择: ¬
select top @pagesize * from table1 where id not in (select top @pagesize*(@page-1) id from table1 order by id) order by id ¬
当然也可以写存储过程: ¬
CREATE PROCEDURE [Zhzuo_GetItemsPage] ¬
@PageIndex INT, /*@PageIndex从计数,0为第一页*/ ¬
@PageSize INT, /*页面大小*/ ¬
@RecordCount INT OUT, /*总记录数*/ ¬
@PageCount INT OUT /*页数*/ ¬
AS ¬
/*获取记录数*/ ¬
SELECT @RecordCount = COUNT(*) FROM Production.Product ¬
/*计算页面数据*/ ¬
SET @PageCount = CEILING(@RecordCount * 1.0 / @PageSize) ¬
/*TOP记录数*/ ¬
DECLARE @TOPCOUNT INT ¬
SET @TOPCOUNT = @RecordCount - @PageSize * @PageIndex ¬
DECLARE @SQLSTR NVARCHAR(1000) ¬
IF @PageIndex = 0 OR @PageCount <= 1 ¬
BEGIN ¬
SET @SQLSTR =N'SELECT TOP '+STR(@PageSize)+ ¬
'ProductID,Name FROM Production.Product ORDER BY ProductID DESC' ¬
END ¬
ELSE ¬
BEGIN ¬
IF @PageIndex = @PageCount - 1 ¬
BEGIN ¬