请问按页数返回查询结果的SQL语句怎么写?

luolie 2003-10-09 02:14:53
问题:

每页显示50条数据,
如果是第一页,则返回1-50条记录,
如果是第二页,则返回51-100条记录,
以次类推。
查询每次返回的数据条数只能是50条。

这样的SQL如何写?
...全文
155 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
txlicenhe 2003-10-09
  • 打赏
  • 举报
回复
eg:
http://expert.csdn.net/Expert/topic/2142/2142477.xml?temp=.7186701
SilverSands 2003-10-09
  • 打赏
  • 举报
回复
我不知道你前台用的什么开发工具,要是用PB,就可以用两个数据窗口,一个取出所有数据,在每50行向另一个里面放,就实现你要的功能了!
Delphi也是可以这样做的!

用数据库也能实现这一功能!
arrow_gx 2003-10-09
  • 打赏
  • 举报
回复
create procedure sp_vlist @cpbmb varchar(6),@crbh varchar(2) with encryption as
set nocount on
declare @sqlcmd varchar(148)
if object_id('tempdb..##vlist') is not null
drop table ##vlist
set @sqlcmd='select identity(int, 1,1) as id, * into ##vlist from '+@cpbmb+' where crbh='''+@crbh+''' order by cpxh
create index ##vlist_id on ##vlist(id)'
exec(@sqlcmd)
set nocount off

---------------------------------------------------
^_^,这只是个建立全局临时表的过程,这样即可一劳永逸,在你的分页程序中使用between进行检索,而between需要倚赖nonclustered index提升效率!

这样你既可以进行排序,也可进行快速检索,

例如:select * from ##vlist where id between 10 and 20 order by cpxh
这个存储过程我认为还是非常有效的,它可以针对不具有连续id的子查询进行分页,我用来开发VC的虚拟列表,现在只要内存足够,那么对于2,000,000记录的表操作起来和查询分析器一样快,当然看通的朋友知道这只是内存的问题了,即使100,000,000记录,分页速度也是一样的!
txlicenhe 2003-10-09
  • 打赏
  • 举报
回复
这种贴子太多了,搜索一下吧。
伍子V5 2003-10-09
  • 打赏
  • 举报
回复

/*
用存储过程实现的分页程序
*/
CREATE procedure Department_pagination
@SelectStr nvarchar(1000),
@ColumnStr nvarchar (1000),
@OrderStr nvarchar (1000),
@CurrentPage int,
@PageCount int
as
declare @TimeName nvarchar(25)
declare @TableStr nvarchar(1000)

select @TimeName = convert(nvarchar(23), getdate(), 121)
set @TimeName = REPLACE(@TimeName, '.', '')
set @TimeName = REPLACE(@TimeName, ':', '')
set @TimeName = REPLACE(@TimeName, '-', '')
set @TimeName = REPLACE(@TimeName, ' ', '')

select @TableStr='create table ##Tab' + @TimeName + '(wb int identity,'
exec(@TableStr+@ColumnStr+')')
exec('insert into ##Tab' + @TimeName + ' ' + @SelectStr + ' order by ' + @OrderStr)
exec('select * from ##Tab' + @TimeName + ' where wb between ((' + @CurrentPage + '-1)*' + @PageCount + '+1) and ' + @CurrentPage + '*' + @PageCount + ' order by wb')
exec('drop table ##Tab' + @TimeName)
GO



参数1:select语句。2:字段列表。3:排序字段。4:当前页。5每页数目

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧