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

lastsky 2003-01-14 06:47:22
系统选样的意思就是先随机取一行数据,然后按定长再向下取,例如:
先随机到第3行取,然后每隔2行取一条。
如何用SQL语句或者存储过程实现它,多谢!
...全文
32 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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