首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

通过某一行得知在分页中所在的页码,该怎么解决

2012-02-04 
通过某一行得知在分页中所在的页码分页的方法有很多,SQLSERVER2005甚至BUILDIN了一种分页的方式,我的需求

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

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

有没有比较高效简单的方法?

[解决办法]
通过row_number() over(order by ) 函数来算吧
[解决办法]
--这样么?
select (count(1)+9)/10 from t a where 排序字段 < 某条记录该字段的值
[解决办法]
-- 生成临时表
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 '

热点排行