摘要:[ASP.NET-SQL]SQL分頁大法[轉]
[轉貼]
以前還沒有那麼熟SQL語法的時候
只會作將資料庫資料讀出來、寫入、更新等等基本的動作,以為這就是SQL的全部了
後來作的東西越來越多、看的越來越多,經驗也比以前豐富了
發現SQL真是博大精深,很多複雜的動作都可以在SQL裡完成
而不需要將資料讀出再交由程式作處理,也減少了程式的複雜度
例如最常用到的分頁,以前總想著把資料全部讀出來再用程式選取需要的資料
但這樣實在太浪費校能和記憶體了
資料量小倒是還好,當資料量一大,成千上萬筆的資料不可能一次選出
因此在此做了筆記
範例資料表名稱: a
範例資料表結構:
id: 主索引
data: 資料
利用以下語法即可達到不需程式控制的分頁技巧
SELECT TOP pSize * FROM [a]
WHERE [a].[id] NOT IN
(SELECT TOP pSize * pIndex [b].[id] FROM [a] AS [b] ORDER BY [b].[id])
ORDER BY [a].[id] DESC
pSize代表一頁的資料筆數
pIndex代表目前的頁面(從0開始)
另外一種分頁法!!~
ROW_NUMBER() Function
這個功能是在SQL Server 2005後的版本才有提供的,我們可透過以下的語法來進行處理:
1 |
SELECT * |
2 |
FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY CustomerID) |
3 |
AS RowNum, CustomerID, CompanyName, ContactName, Country FROM Customers) |
4 |
AS NewTable |
5 |
|
感謝91大大的指導!!~....
轉貼自GIPI大大.....