2012年10月2日星期二

分页——SQL Server 对比 MySQL

分页——SQL Server 对比 MySQL

原文见:http://www.sqlservercurry.com/2012/09/pagination-sql-server-vs-mysql.html

使用最新版本的 SQL Server 2012 直接编写支持分页的语句了:

SELECT * FROM testing
ORDER BY sales_date
OFFSET 0 ROWS
FETCH NEXT 5 ROWS ONLY

使用 MySQL 实现相同的功能:

SELECT * FROM testing
ORDER BY sales_date
LIMIT 0,5

在我找到的另一篇博客里(http://www.c-sharpcorner.com/UploadFile/rohatash/offset-and-fetch-next-keywords-in-sql-server-2012/),不但介绍了使用 SQL Server 2012 实现分页,还讲到了在 SQL Server 2005/2008 中如何实现:

SELECT * FROM
(SELECT ROW_NUMBER() OVER(ORDER BY User_Id) AS number, *
FROM userdetail) AS TempTable
WHERE number > 0 AND number <= 4

如果使用 SQL Server 2012,该作者提供了使用存储过程进行分页的写法:

CREATE PROCEDURE TestPaging
(
@PageNumber INT,
@PageSize INT
)
AS
DECLARE @OffsetCount INT
SET @OffsetCount = (@PageNumber-1)*@PageSize
SELECT *
FROM [UserDetail]
ORDER BY [User_Id]
OFFSET @OffsetCount ROWS
FETCH NEXT @PageSize ROWS ONLY
GO

获取第一页的调用方法:EXECUTE TestPaging 1, 5获取第二页的调用代码:EXECUTE TestPaging 2, 5
TAG: