WEB开发网
开发学院数据库MSSQL Server SQL 2005之四种排名函数 阅读

SQL 2005之四种排名函数

 2010-10-01 10:25:30 来源:WEB开发网   
核心提示: 行号的一个典型应用是通过查询结果分页,给定页大小(以行数为单位)和页号,SQL 2005之四种排名函数(5),需要返回属于给定页的行,例如,下面的查询首先按照指定的排序计算派生表 D 中的行数,然后只筛选行号为 4 到 6 的行(它们属于第二页):SELECT *FROM (SELECT RO

行号的一个典型应用是通过查询结果分页。给定页大小(以行数为单位)和页号,需要返回属于给定页的行。例如,假设您希望按照“score DESC, speaker”顺序从 SpeakerStats 表中返回第二页的行,并且假定页大小为三行。下面的查询首先按照指定的排序计算派生表 D 中的行数,然后只筛选行号为 4 到 6 的行(它们属于第二页):

SELECT *
FROM (SELECT ROW_NUMBER() OVER(ORDER BY score DESC, speaker) AS rownum,
        speaker, track, score
      FROM SpeakerStats) AS D
WHERE rownum BETWEEN 4 AND 6

以下为结果集:

rownum speaker    track      score
------ ---------- ---------- -----------
4      Kathy      Sys              8
5      Michele    Sys              8
6      Mike        DB              8

用更一般的术语表达就是,给定 @pagenum 变量中的页号和 @pagesize 变量中的页大小,以下查询返回属于预期页的行:

DECLARE @pagenum AS INT, @pagesize AS INT
SET @pagenum = 2
SET @pagesize = 3
SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY score DESC, speaker) AS rownum
                ,speaker
                , track
                , score
                FROM SpeakerStats)AS D
       WHERE rownum BETWEEN (@pagenum-1)*@pagesize+1 AND @pagenum*@pagesize

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:SQL 排名 函数

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接