SQL2005使用NTILE和ROW_NUMER为查询实现分页

Admin | 2007-11-10 11:30:45 | TrackRecord: 1544 Times | Tag标签:数据库Sql,VFP,Access 打印本页

您当前所处的位置是:〖首页〗→【文章页】 本站共有16个图文教程栏目,请用心拜读!

本站提供经典的Excel公式函数实例,Word排版技巧,PPT教程;同时更兼有Flash,PowerPoint,数据库等技术文章。

下面就是一个很简单的分页查询语句:  
DECLARE   @rows_per_page   AS   INTEGER
DECLARE   @current_page   AS   INTEGER
DECLARE   @total_pages   AS   INTEGER

--   设置每页的行数
SET   @rows_per_page   =   20
--   设置要显示的页号(从1开始)
SET   @current_page   =   2
--   计算总页数
SELECT   @total_pages   =   COUNT(*)   /   @rows_per_page
FROM   testtable;

--   列出指定页的内容
WITH   t   AS
(
    SELECT   NTILE(@total_pages)   OVER(ORDER   BY   id)   AS   page_number,   *  
    FROM   testtable
)
SELECT   *   from   t  
WHERE   page_number   =   @current_page     程序简单到可以不用说明的程度。
  我们可以利用上述简单的语句,变化排序条件和查询表,就可以做出一个很通用的分页查询的存储过程或查询语句了。

  同样的,使用ROW_NUMBER也可以做到分页查询:
DECLARE   @rows_per_page   AS   INTEGER
DECLARE   @current_page   AS   INTEGER
DECLARE   @start_row_num   AS   INTEGER

--   设置每页的行数
SET   @rows_per_page   =   20
--   设置要显示的页号(从1开始)
SET   @current_page   =   2
--   设置开始行号
SET   @start_row_num   =   (@current_page   -   1)   *   @rows_per_page

WITH   t   AS
(
    SELECT   ROW_NUMBER()   OVER(ORDER   BY   id)   AS   row_number,   *  
    FROM   testtable
)
SELECT   *   from   t  
WHERE   row_number   BETWEEN   @start_row_num   AND   @start_row_num   +   @rows_per_page  似乎更简单的样子。


上一篇:使用可视化方式恢复bak文件到SQL数据    下一篇:SQL常用的精典语句

会员评论列表:
针对本篇文章或本站,请您发表个人的建议或批评!
FreeBoxPc

谷歌搜索 百度搜索 本站仅与内容具备一定的实用价值的原创网站交换友情链接,力争为大众做出更优质的服务!
All Rights Reserved版权所有 本站备案信息:滇ICP备11001339号-2 站长联系方式 Email:dzwebs@126.com