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

随机取一组连续的记录

2012-01-15 
求助:随机取一组连续的记录如表:temID12345678如果取3条记录,结果可以是:123或456或781或812等等[解决办法

求助:随机取一组连续的记录
如表:
temID
1
2
3
4
5
6
7
8

如果取3条记录,结果可以是:
1
2
3

4
5
6

7
8
1

8
1
2
等等




[解决办法]
select top 3 * from table order by newid()
[解决办法]

--创建测试环境
create table 表名 (tempid int)

--追加测试数据
insert into 表名
select 1 union all
select 2 union all
select 3 union all
select 4 union all
select 5 union all
select 6 union all
select 7 union all
select 8


create table #t (id int identity(1,1),tempid int)

declare @tempid int

set @tempid=(select top 1 tempid from 表名 order by newid())

--追加第一个随机数
insert into #t(tempid) select @tempid

--追加大于这个数据的tempid,取> @tmepid 的2条记录,可能不存在
insert into #t
select top 2 tempid
from 表名
where tempid> @tempid
order by tempid


--如果不满3条,继续从开始的记录追加,最多需要追加2条
insert into #t(tempid)
select top 2 tempid
from 表名
order by tempid

--按照追加的顺序,取前3条即可
select top 3 tempid from #t order by id

--删除测试表
drop table #t,表名

热点排行