SQL SERVER的有哪幾種分頁方式

東西:SQL SERVER 2017
方式/
1第一種:ROW_NUMBER() OVER()體例
把表中的所稀有據都按照一個ROW_NUMBER進行排序, 然后查詢ROW_NUMBER 10 到20之間的前十筆記錄 。
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER(ORDER BY LOG_ID ) AS ROWID FROM LOG_SYSTEM
) AS B
WHERE ROWID BETWEEN 10 AND 20
---WHERE ROWID BETWEEN 當前頁數-1*條數 AND 頁數*條數---

SQL SERVER的有哪幾種分頁方式



2第二種體例:OFFSET FETCH NEXT體例(SQL2012以上的版本才撐持:保舉利用 )
利用OFFSET是SQLServer2012新具有的分頁功能, 本家兒要功能是從第x條數據起頭共取y數據 。 可是其必需根再Order By后面利用, 比擬前三種體例加倍便利 。
SELECT * FROM LOG_SYSTEM
ORDER BY LOG_ID
OFFSET 4 ROWS FETCH NEXT 5 ROWS ONLY
---ORDER BY LOG_ID
OFFSET 頁數 ROWS FETCH NEXT 條數 ROWS ONLY ---

SQL SERVER的有哪幾種分頁方式



3--第三種體例:--TOP NOT IN體例 (順應于數據庫2012以下的版本)
先搜出id在1-15之間的數據, 緊接著搜出id不在1-15之間的數據, 最后將搜出的成果取前十條 。
SELECT TOP 10 * FROM LOG_SYSTEM
WHERE LOG_ID NOT IN (SELECT TOP 15 LOG_ID FROM LOG_SYSTEM)
---WHERE ID NOT IN (SELECT TOP 條數*頁數 LOG_ID FROM LOG_SYSTEM) ---

SQL SERVER的有哪幾種分頁方式



4--第四種體例:用存儲過程的體例進行分頁
CREATE PROCEDURE PAGE_DEMO
@TABLENAME VARCHAR(20),
@PAGESIZE INT,
@PAGE INT
AS
DECLARE @NEWSPAGE INT,
@RES VARCHAR(100)
BEGIN
SET @NEWSPAGE=@PAGESIZE*(@PAGE - 1)
SET @RES='SELECT * FROM ' +@TABLENAME+ ' ORDER BY LOG_ID OFFSET '+CAST(@NEWSPAGE AS VARCHAR(10)) +' ROWS FETCH NEXT '+ CAST(@PAGESIZE AS VARCHAR(10)) +' ROWS ONLY'
EXEC(@RES)

EXEC PAGE_DEMO @TABLENAME='LOG_SYSTEM',@PAGESIZE=3,@PAGE=5
GO

SQL SERVER的有哪幾種分頁方式



5小結
【SQL SERVER的有哪幾種分頁方式】自我感受第二種體例很是的簡單,不冗余因為沒有嵌套查詢啊, 少了Sql語句的嵌套, 就少了“視覺上的邏輯”, 可是大師必然要切記, 這種體例只是適合SqlServer 2012以及更高的版本 。 由上面的例子可以看出, SqlServer簡直挺壯大的, 可是若是我們貧乏發現“功能” 的眼睛的話, Sql Server再壯大對我們來說也沒有 。

SQL SERVER的有哪幾種分頁方式




以上內容就是SQL SERVER的有哪幾種分頁方式的內容啦, 希望對你有所幫助哦!

    猜你喜歡