SQL Server 2012利用OFFSET...FETCH实现分页查询
SQL Server 2008 R2以及之前的版本中因为不支持类似Mysql的Limit语法,处理分页逻辑时虽然有多种方案,比如利用Top或利用RowNumber()函数分页,SQL语句都稍显繁琐,性能也不够理想。SQL Server 2012中开始,我们可以通过OFFSET...FETCH语法一句话实现分页。
假设我们需要对一张文章信息表进行分页查询,下列SQL语句可以查询第10页数据,每页包含20条数据:
SELECT ID, Title, Content
FROM ArticleDetail
ORDER BY UpdateTime DESC
OFFSET (20 * (10-1)) ROW FETCH NEXT 20 ROWS ONLY
和MySql的Limit方式十分相似:
SELECT ID, Title, Content
FROM ArticleDetail
ORDER BY UpdateTime DESC
LIMIT (20 * (10-1)), 20