以前用ID唯一做分页排序 还好办 select top 20 ...... where id<=(select min(id) from (select ......)) order by id desc 就可以搞定速度也很快。 但现在要先通过另一个字段 best 排序后再ID 排序。 best 字段有两个值0或者1。
......order by best desc,id desc表
t1
字段 类型
id int
title nvchar
content ntext
best tinyint
......order by best desc,id desc表
t1
字段 类型
id int
title nvchar
content ntext
best tinyint
INTO #Temp
FROM [YourTalbe]
order by best desc再对#Temp用原来的方法来分页。
您好,我们是“2006中国杰出数据库工程师评选”活动组委会。
您的帖子已经被我们转载到本次评选官方网站的“专家在线答疑”区。
http://www.bestdba.cn/match_discussion.aspx在那里,进入本次评选复选的90位数据库工程师将与您展开积极的互动。
一方面,他们会为您的问题提供满意的答案,
另一方面,也邀请您为他们投上宝贵的选票。2006-7-8 ~ 2006-7-25日,每天我们将从当天参与"有奖投票"的网友
中抽取3名幸运者,赠送由IBM提供的精美礼品一份!此外,您还可以在“专家在线答疑”区提出新的问题并参与讨论。您的帖子位于:
http://www.bestdba.cn/match_discussion3.aspx?pointid=14&pointid2=1&pointid3=5非常感谢您对本次活动的支持!
--------------------------------------------------------------
然后 把取出结果...倒过来排序..再取TOP 20 再倒回来排序..要考虑到..有可能记录没达到2页..我已经实现过了..很不错..就是SQL语句写的复杂了点..
加入你做sort的那列的值只有很少几个(你可以把那列的值设成同样的来试验),分页后会发现有几页的内容是一样的。
select * from t1 where id in(select top 20 id from (select top 400 id,best from t1 where ..... order by best desc,id desc) a order by best asc,id asc)