select IDENTITY(int, 1,1) AS ID_Num,* into #temp from 表 select * from #temp where ID_Num>10 and ID_Num<=20
SELECT * FROM T t1 WHERE hits IN (SELECT TOP 10 hits FROM T WHERE datediff(month,dates,t1.dates)=0 ORDER BY hits desc ) ORDER BY year(t1.dates) DESC ,month(t1.dates) desc, t1.hits DESC
比如数据库中有10条记录 1 a 2 b 3 c … 现在只想得到一个数据集,而该数据集内容为从第4条记录到第6条记录,也就是 4 d 5 e 6 f
select top 20 字段列表,newField = identity(int,1,1) into #a from 表 select top 10 字段列表 from #a order by newfield desc
假如表中ID是主键的话: select top 20 * from 表 where id not in (select top 10 from 表 order by id) order by id
个人认为这不是好办法,因为如何我要选择的10000条数据到10010条数据之间的数据,那么就必须先 Select top 10000,这样对查询速度肯定有影响。这个问题在我写论坛时就困扰我很久,后来发现用建立游标解决。顶楼的老兄,建议先为所有记录建立游标,然后在通过选择的10到第20游标的记录,我的论坛是这样做分页的,但具体代码我忘记了。
select * from #temp where ID_Num>10 and ID_Num<=20
FROM T t1
WHERE hits IN (SELECT TOP 10 hits
FROM T
WHERE datediff(month,dates,t1.dates)=0
ORDER BY hits desc
)
ORDER BY year(t1.dates) DESC ,month(t1.dates) desc, t1.hits DESC
http://expert.csdn.net/Expert/topic/1232/1232240.xml?temp=.5055353
1 a
2 b
3 c
…
现在只想得到一个数据集,而该数据集内容为从第4条记录到第6条记录,也就是
4 d
5 e
6 f
from 表
select top 10 字段列表 from #a order by newfield desc
select top 20 * from 表 where id not in (select top 10 from 表 order by id) order by id