通过某一行得知在分页中所在的页码

Mirricle 2007-08-22 10:42:10
分页的方法有很多,SQL SERVER 2005甚至BUILD IN了一种分页的方式,我的需求不是怎么分页,而是反过来。
一个结果集,不分页的时候,假设1000条,按每页10条,那么是100页。
第10页有一行,假定为A
那么现在我想通过A的比如ID,得到第10页的这个页码,有什么办法?
A的ID不是IDENTITY,是GUID,排序也不是以ID排序,以其他某几个字段的值进行排序,甚至组合排序

最直接的办法,从第一页开始取,什么时候看到A为止,当前页就是A所在的页,但是如果页比较多呢,如果A在最后一页呢?那么查询次数实在是难以想象

有没有比较高效简单的方法?
...全文
139 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mirricle 2007-08-22
  • 打赏
  • 举报
回复
通过row_number() over(order by ) 函数来算吧


怎么算
Mirricle 2007-08-22
  • 打赏
  • 举报
回复
这样做临时表,相当于要把整个结果集放弃进去,最终就是要取出一个页码
不浪费么?
zjcxc 2007-08-22
  • 打赏
  • 举报
回复
-- 生成临时表
SELECT
RowID = IDENTITY(int, 0, 1),
ID
INTO #
FROM 表A
ORDER BY 排序方式

DECLARE @PageSize int
SET @PageSize = 10 -- 每页的记录数
SELECT
页码 = RowID / @PageSize + 1
FROM #
WHERE ID = '要查询的ID'
mengmou 2007-08-22
  • 打赏
  • 举报
回复
--这样么?
select (count(1)+9)/10 from t a where 排序字段 < 某条记录该字段的值
dobear_0922 2007-08-22
  • 打赏
  • 举报
回复
这个在前台处理比较好。
TigerEatAngil 2007-08-22
  • 打赏
  • 举报
回复
通过row_number() over(order by ) 函数来算吧

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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