导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

上个问题的100分已经放过了。再提问一个关于系统选样的问题,分数不少于100分。

lastsky 2003-01-14 06:47:22
系统选样的意思就是先随机取一行数据,然后按定长再向下取,例如:
先随机到第3行取,然后每隔2行取一条。
如何用SQL语句或者存储过程实现它,多谢!
...全文
3 点赞 收藏 2
写回复
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xystarch 2003-01-14
不好意思
改进一下
create proc randAccess
@randomSeed int --初始化随即种子
@randomRage int --随机数取值范围
@interval int --定长
as
declare @randomNum int
select @randomNum=rand(@randomSeed)*@randomRage

declare pCur cursor for
select * from tbl_1

open pCur

fetch ABSOLUTE @randomNum FROM pCur

while @@fetch_status=0
begin
fetch RELATIVE @interval FROM pCur
end
DEALLOCATE pCur

go


或者randomSeed不要,直接在proc里面指定某种随机算法
比如:

RAND( (DATEPART(mm, GETDATE()) * 100000 )
+ (DATEPART(ss, GETDATE()) * 1000 )
+ DATEPART(ms, GETDATE()) )

回复
xystarch 2003-01-14
create proc randAccess
@randomSeed int
@interval int
as
declare @randomNum int
select @randomNum=rand(@randomSeed)
declare pCur cursor for
select * from tbl_1

open pCur

fectch ABSOLUTE @randomNum FROM pCur

while @@fetch_status=0
begin
FETCH RELATIVE @interval FROM authors_cursor
end
DEALLOCATE pCur

go

回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告