打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
SQL分页语句 ( 转自牛腩老师的博客 )
sql server2000方法:

 

 

Sql代码
 
  1. select top 每页显示的记录数 * from topic where id not in  
  2.  (select top (当前的页数-1)×每页显示的记录数 id from topic order by id desc)   
  3.  order by id desc  

    需要注意的是在access中不能是top 0,所以如果数据只有一页的话就得做判断了。。

 

②sql server2005中的分页代码:

 

 

Sql代码
 
  1. with temptbl as (   
  2.   SELECT ROW_NUMBER() OVER (ORDER BY id desc)AS Row,    
  3.   ...   
  4. )   
  5. SELECT * FROM temptbl where Row between @startIndex and @endIndex  

 该方法说明:创建一个临时表,表中加一列元素ROW,然后按照ROW的大小取出相应的页的数据(主要用于web开发分页管理)

   实例:

 

Sql代码
 
  1. with temptbl as (   
  2.   SELECT ROW_NUMBER() OVER (ORDER BY id desc)AS 行号,* from news   
  3. )   
  4. SELECT * FROM temptbl where 行号 between 9 and 16  

 

 

 

 

 

补充:

 

11 楼 niunan 2009-07-22   引用

自己在网上找了一下。。发现http://hi.baidu.com/fuhengyu/blog/item/adb30aafe4df88c87cd92ae9.html
有个分页存储过程,觉得蛮简单的,弄下来在自己的机子上测试了一下,发现出错,自己更改了一下错误,改后的分页存储过程如下:

Sql代码
 
  1. SET ANSI_NULLS ON  
  2. GO   
  3. SET QUOTED_IDENTIFIER ON  
  4. GO   
  5. -- =============================================   
  6. -- Author:      牛腩   
  7. -- Create date: 2009-07-22 12:41   
  8. -- Description: 分页,用到了ROW_NUMBER()   
  9. -- =============================================   
  10. ALTER PROCEDURE [dbo].[proc_ShowPage]   
  11. @tblName   varchar(255),       -- 表名   
  12. @strGetFields varchar(1000) = '*'-- 需要返回的列,默认*   
  13. @strOrder varchar(255)='',      -- 排序的字段名,必填   
  14. @strOrderType varchar(10)='ASC'-- 排序的方式,默认ASC   
  15. @PageSize   int = 10,          -- 页尺寸,默认10   
  16. @PageIndex int = 1,           -- 页码,默认1   
  17. @strWhere varchar(1500) = '' -- 查询条件 (注意: 不要加 where)   
  18. AS  
  19.   
  20. declare @strSQL   varchar(5000)   
  21.   
  22. if @strWhere !=''  
  23. set @strWhere=' where '+@strWhere   
  24.   
  25. set @strSQL=   
  26. 'SELECT * FROM ('+   
  27.     'SELECT ROW_NUMBER() OVER (ORDER BY '+@strOrder+' '+@strOrderType+') AS pos,'+@strGetFields+' '+   
  28.     'FROM ['+@tblName+'] '+@strWhere+   
  29. ') AS sp WHERE pos BETWEEN '+str((@PageIndex-1)*@PageSize+1)+' AND '+str(@PageIndex*@PageSize)   
  30.   
  31. exec (@strSQL)   
  32. print @strSQL  -- 测试用,可在查询的时候看到生成的SQL语句  
 

 

 

 

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
[百万级]通用分页存储过程.[千万级]实现千万级数据的分页显示! - SQL Server - 数据库开发 - 大家论坛 - Powered by Discuz!
sql 优化之:实现小数据量和海量数据的通用分页显示存储过程(系列四)
sql分页存储过程
sql server分页存储过程
sql分页
SQL server 分页方法小结
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服