SQL2005利用ROW_NUMBER() OVER實現(xiàn)分頁功能
1.首先介紹ROW_NUMBER() OVER的基本用法
2.看一下實例數(shù)據(jù)
初始化數(shù)據(jù)
create table employee (empid int ,deptid int ,salary decimal(10,2))
insert into employee values(1,10,5500.00)
insert into employee values(2,10,4500.00)
insert into employee values(3,20,1900.00)
insert into employee values(4,20,4800.00)
insert into employee values(5,40,6500.00)
insert into employee values(6,40,14500.00)
insert into employee values(7,40,44500.00)
insert into employee values(8,50,6500.00)
insert into employee values(9,50,7500.00)
數(shù)據(jù)結(jié)果顯示
根據(jù)部門分組(deptid),顯示每個部門的工資(salary)等級

這是想要得到的結(jié)果第二列根據(jù)部門進(jìn)行分組,第三列工資由高到低,rank進(jìn)行部門內(nèi)部的排列
3.簡單分頁實現(xiàn)
SELECT Row_Number() OVER (ORDER BY salary desc) rank,* FROM employee
根據(jù)上面1,2兩點我們可以看出這個SQL只是按照工資降序排序后,并沒有通過PARTITION BY COLUMN進(jìn)行分區(qū)(分組),然后通過row_number()從1開始,為每一條分組記錄返回一個數(shù)字。結(jié)果如下
將上面SQL返回的結(jié)果集當(dāng)作一個數(shù)據(jù)表
(SELECT Row_Number() OVER (ORDER BY salary desc) rank,* FROM employee)as NewTable
假如我們每頁5條記錄,
那么第一頁顯示select * from (SELECT Row_Number() OVER (ORDER BY salary desc) rank,* FROM employee ) as NewTable where rank between 1 and 5
第二頁為select * from (SELECT Row_Number() OVER (ORDER BY salary desc) rank,* FROM employee ) as NewTable where rank between 6 and 10
當(dāng)然我們第二頁這里只有4條記錄。
分頁就這樣實現(xiàn)了,對于多表查詢進(jìn)行分頁也是同樣的道理。
- sqlserver 通用存儲過程分頁代碼(附使用ROW_NUMBER()和不使用ROW_NUMBER()兩種情況性能分析)
- 一個基于ROW_NUMBER()的通用分頁存儲過程代碼
- sqlserver2005使用row_number() over分頁的實現(xiàn)方法
- Oracle row_number() over()解析函數(shù)高效實現(xiàn)分頁
- C#拼接SQL語句 用ROW_NUMBER實現(xiàn)的高效分頁排序
- 高效的SQLSERVER分頁查詢(推薦)
- 解析數(shù)據(jù)庫分頁的兩種方法對比(row_number()over()和top的對比)
- 使用row_number()實現(xiàn)分頁實例
- SQLSERVER分頁查詢關(guān)于使用Top方式和row_number()解析函數(shù)的不同
- SQL Server使用row_number分頁的實現(xiàn)方法
相關(guān)文章
sqlserver中獲取當(dāng)前日期的午夜的時間值的實現(xiàn)方法
MS SQLServer,如何獲取當(dāng)前系統(tǒng)日期的午夜的時間值的方法,需要的朋友可以參考下。2011-09-09SQL Server中TRUNCATE事務(wù)回滾操作方法
本文介紹在事務(wù)中回滾TRUNCATE操作的方法,并演示了操作的結(jié)果,是可以對TRUNCATE進(jìn)行回滾操作的。2016-05-05Win2008中安裝的MSSQL2005后無法訪問的解決方法
最近筆者一直在使用Win2008系統(tǒng),不過發(fā)現(xiàn)一個很奇怪的問題,那就是在該系統(tǒng)上安裝了SQL2005后,再在其他計算機(jī)訪問該主機(jī)顯示不能訪問2014-07-07一步一步教你創(chuàng)建SQL 2005計劃任務(wù)應(yīng)用圖解教程
使用sql的計劃任務(wù)可以處理一些特殊環(huán)境的數(shù)據(jù),除了使用windows系統(tǒng)的計劃任務(wù)來定時處理,不過要配合程序才行,有些事情可以直接使用sql本身的計劃任務(wù),更方便,所以本文圖解一下Sql2005計劃任務(wù)的創(chuàng)建使用。2010-03-03MSSQL 大量數(shù)據(jù)時,建立索引或添加字段后保存更改提示超時的解決方法
一般我們都喜歡用數(shù)據(jù)庫管理器的UI來對數(shù)據(jù)表結(jié)構(gòu)進(jìn)行更改,然后自然而然地點"保存"按鈕進(jìn)行保存,但數(shù)據(jù)量比較大的時候,用這招往往會出現(xiàn)"無法創(chuàng)建索引“IX_索引名”。 超時時間已到。在操作完成之前超時時間已過或服務(wù)器未響應(yīng)。2011-08-08SQLServer2005 沒有服務(wù)器名稱的兩種解決方法
這篇文章主要介紹了SQLServer2005 沒有服務(wù)器名稱的兩種解決方法,需要的朋友可以參考下2015-01-01Sql Server 2005中查詢用分隔符分割的內(nèi)容中是否包含其中一個內(nèi)容
Sql Server 2005中查詢用分隔符分割的內(nèi)容中是否包含其中一個內(nèi)容,多個朋友給予的參考。2011-10-10SQL Server2005打開數(shù)據(jù)表中的XML內(nèi)容時報錯的解決辦法
從SQL Server2005開始提供了一種新的數(shù)據(jù)類型XML type,它允許用戶將數(shù)據(jù)以XML文件的格式直接存儲到數(shù)據(jù)表中2012-02-02