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 3userIDFROM t_userWHERE userID NOT IN ( SELECT TOP 6userIDFROM t_user ) )
第二種:PageSize(分頁的大小)和PageIndex(分頁索引,初始假設為1)均為變量
SELECT *
FROM ( SELECT TOP PageSize *FROM ( SELECT TOP [PageIndex*PageSize]*FROM dbo.t_userORDER BY id ASC) AS bORDER 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_userWHERE 1 = 1) AS t
WHERE t.rownumber > (PageSize *(PageIndex-1))AND t.rownumber <= (PageSize *PageIndex)