求救:如果我想从数据库里取未经排序的数据,从第n条开始取,取n条,该怎么实现啊

songfrh 2003-11-19 06:11:28
声明,是未经排序的数据,就是数据库里的自然数据
不能用游标,效率太低
多谢了
...全文
103 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wilson1293 2003-11-19
  • 打赏
  • 举报
回复
邹建,不错
songfrh 2003-11-19
  • 打赏
  • 举报
回复
邹建,不过我还是觉得你很牛,不错
songfrh 2003-11-19
  • 打赏
  • 举报
回复
我看了你的帖子,多半还是在用临时表来做,可是如果我要做并发量很大的话,是不是就有问题了,郁闷啊
songfrh 2003-11-19
  • 打赏
  • 举报
回复
not in 可能不能用,我有上万条数据的话,岂不是很慢
zjcxc 2003-11-19
  • 打赏
  • 举报
回复
更多的方法参考我的贴子:


查询第X页,每页Y条记录
http://expert.csdn.net/Expert/topic/2365/2365596.xml?temp=.310528
zjcxc 2003-11-19
  • 打赏
  • 举报
回复

最基本的处理方法:

如果表中有主键(记录不重复的字段也可以),可以用类似下面的方法,当然x,y要换成具体的数字,不能用变量:

select top y * from 表 where 主键 not in(select top (x-1)*y 主键 from 表)



如果表中无主键,可以用临时表,加标识字段解决.这里的x,y可以用变量.

select id=identity(int,1,1),* into #tb from 表
select * from #tb where id between (x-1)*y and x*y-1

songfrh 2003-11-19
  • 打赏
  • 举报
回复
能不能不用临时表呢?还有别的办法吗?
jornny 2003-11-19
  • 打赏
  • 举报
回复
不错,学了一招
pengdali 2003-11-19
  • 打赏
  • 举报
回复
select IDENTITY(int, 1,1) AS ID_Num,* into #temp from 表
select * from #temp where ID_Num between 10 and 20
songfrh 2003-11-19
  • 打赏
  • 举报
回复
有谁还在加班啊,帮我看看吧,多谢了哦,我在线等候佳音

22,209

社区成员

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

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