SQL----分页存储过程
来源:互联网 发布:卡卡西喜欢谁知乎 编辑:程序博客网 时间:2024/04/29 20:05
做论坛帖子列表时用到了AspNetPager控件,这是一个纯分页用的控件,与数据毫无关系。在分页时需要自己写存储过程。一开始用select top 10 * from A WHERE id not in (select top 10 id from A )来做,有个问题:sqlsqrver2000中,top后面不能跟变量,这直接导致这种方法失效,而且这样做也很浪费资源。
于是,换了个做法:
ALTER PROCEDURE dbo.StoredProcedure1
(@startIndex int, //每页起始id
@endIndex int, //每页完毕id
@Forum_Id int, //版块id
@State int //帖子状态
)
as
set nocount on
declare @indextable table(id int identity(1,1),nid int) //定义一个临时表,用来存储查询全部结果的顺序号,从1开始一直到记录总数
set rowcount @endIndex
insert into @indextable(nid) //将查询结果写入新表,并自动生成顺序号
select Id from Topic
WHERE (Topic.Forum_Id = @Forum_Id)
AND (Topic.State != @State)
order by Topic.Issue_Date DESC //这里的排序方式必须和下面的排序一致
SELECT Topic.*, UserInfo.User_Name FROM Topic //按每页(endIndex-startIndex)条,显示查询符合条件主题的帖子
INNER JOIN UserInfo ON Topic.User_Id = UserInfo.Id
INNER JOIN @indextable t ON Topic.Id=t.nid
WHERE (Topic.Forum_Id = @Forum_Id)
AND (Topic.State != @State) //查询除了置顶帖(3)以外的帖子,并按发表时间降序排列
AND (t.id between @startIndex and @endIndex) order by Topic.Issue_Date DESC
set nocount off
RETURN
于是,换了个做法:
ALTER PROCEDURE dbo.StoredProcedure1
(@startIndex int, //每页起始id
@endIndex int, //每页完毕id
@Forum_Id int, //版块id
@State int //帖子状态
)
as
set nocount on
declare @indextable table(id int identity(1,1),nid int) //定义一个临时表,用来存储查询全部结果的顺序号,从1开始一直到记录总数
set rowcount @endIndex
insert into @indextable(nid) //将查询结果写入新表,并自动生成顺序号
select Id from Topic
WHERE (Topic.Forum_Id = @Forum_Id)
AND (Topic.State != @State)
order by Topic.Issue_Date DESC //这里的排序方式必须和下面的排序一致
SELECT Topic.*, UserInfo.User_Name FROM Topic //按每页(endIndex-startIndex)条,显示查询符合条件主题的帖子
INNER JOIN UserInfo ON Topic.User_Id = UserInfo.Id
INNER JOIN @indextable t ON Topic.Id=t.nid
WHERE (Topic.Forum_Id = @Forum_Id)
AND (Topic.State != @State) //查询除了置顶帖(3)以外的帖子,并按发表时间降序排列
AND (t.id between @startIndex and @endIndex) order by Topic.Issue_Date DESC
set nocount off
RETURN
- sql 存储过程分页
- sql 存储过程分页
- sql分页存储过程
- sql分页存储过程
- sql 存储过程分页
- sql 存储过程分页
- SQL 存储过程---分页
- 分页存储过程--sql
- sql存储过程 分页
- sql 存储过程分页
- SQL 分页存储过程
- SQL分页存储过程
- sql分页存储过程
- SQL分页存储过程
- sql分页存储过程
- SQL ----存储过程分页
- SQL分页存储过程
- SQL----分页存储过程
- 关于vc#2008无法建立数据库连接
- AJAX----回调函数小问题
- .NET----在ashx 中使用Session
- js----Visible和style.display的不同
- js----js生成table显示问题
- SQL----分页存储过程
- SQL----动态SQL,连接字符串与变量的问题
- SQL----动态SQL中,单引号的使用问题
- static{}的意思.
- .NET----AspNetPager不使用URL传递分页信息
- LVS会话保持的问题
- 关于DM355上yaffs2的启动时间
- 近期阅读关注(200903)
- SQL----带输入、输出参数的动态SQL的执行问题