最近一直在看SQL Server的書,不過看的都是基礎的查詢流,查詢在工作中用到的最多,所以能正確地查詢出想要的數據也是很重要的嘛。
在書上看到在SQL Server 2012新增了一種實現分頁的查詢方法,感覺比原來的方便一點,因此記錄一下,如能幫助到大家,也是非常開心的~
以前分頁的時候,我基本都是用ROW_NUMBER()函數,和在WHERE語句中用BETWEEN AND 來實現的;每次都得寫子查詢,感覺挺麻煩的,例:
SELECT * FROM ( SELECT ID, ROW_NUMBER() OVER(ORDER BY [Datetime] DESC) AS num FROM dbo.tblUser ) AS t WHERE t.num BETWEEN 11 AND 20
在SQL Server 2012中就不需要寫子查詢啦,直接在ORDER BY語句中就可以實現分頁啦!例:
SELECT ID, ROW_NUMBER() OVER(ORDER BY [Datetime] DESC) AS num FROM dbo.tblUser ORDER BY num OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY
需注意的是:該語法是在ORDER BY 子句中引入了兩個新的參數 OFFSET 和 FETCH,因此它們必須在order by語句只有使用,且必須結合使用才能使分頁正常運作。
OFFSET指定在返回查詢結果之前要跳過的行數,FETCH指定OFFSET之后返回的行數。