当前位置:首页 > PHP教程 > PHP总结归纳

SQLserver2005的简单分页程序

  sql server 2005增加了不少新特性,其中ntile和row_numer使得我们不再为sql如何灵活方便的分页伤脑筋了(不必再羡慕oracle等数据库了)。

  下面就是一个很简单的分页查询语句:

  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  似乎更简单的样子。

  至于哪种效率更高,这需要大家实际测试了。


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!