sql server 中的分页查询sql语句不跟mysql 一样,mysql 用 limit 可以实现查询sql分页。如:
select * from news where id>=(select id from news limit 250000,1) limit 10; //相对执行效率高
select * from news limit 250000,10;
mysql 中 limit总是设定为pageSize;offset计算公式为pageSize * (pageIndex - 1),但我今天主要讲的不是mysql ,是 sql server 中的分页。在sql server中没有limit关键词,相对应的是 top 关键字,所以可以使用以下方法查询:
第一种:
SELECT *
FROM dbo.t_user
WHERE userID IN ( SELECT TOP 3
userID
FROM t_user
WHERE userID NOT IN ( SELECT TOP 6
userID
FROM t_user ) )
第二种:PageSize(分页的大小)和PageIndex(分页索引,初始假设为1)均为变量
SELECT *
FROM ( SELECT TOP PageSize
*
FROM ( SELECT TOP [PageIndex*PageSize]
*
FROM dbo.t_user
ORDER BY id ASC
) AS b
ORDER BY id DESC
) AS c
ORDER BY id ASC;
第三种:PageSize(分页的大小)和PageIndex(分页索引,初始假设为1)均为变量
SELECT *
FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY userID ASC ) AS rownumber ,
*
FROM dbo.t_user
WHERE 1 = 1
) AS t
WHERE t.rownumber > (PageSize *(PageIndex-1))
AND t.rownumber <= (PageSize *PageIndex)
更多推荐
查询分页的几种sql语句
发布评论