SQL Server 随机取n条记录

客户要搞个“抽奖”程序。
生个随机数往记录上对感觉太麻烦,想让记录随机排序。

select * from table order by RAND ( )

RAND需要个种子,帮助实例

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

程序执行的太快这方法不成,每次结果都一样的。
想起GUID每个都不同。

select  *  from table  order by newid ( )

执行了几次感觉上符合要求,每次出来的都不一样。至于值域分布没深究,随机函数本身也是伪随机的。
做了个简单的测试

CREATE TABLE #t(cname char(50) ,sysid uniqueidentifier)

DECLARE @i int

set @i = 0

WHILE (@i) < 1760
BEGIN
    INSERT INTO #t select top 1 cname,sysid from tVIPMember  order by newid() 
    SET  @i = @i + 1
END

select count(*) from
 (select cname as a from #t group by cname,sysid ) a

库里一共是1760条记录,执行了几次结果在 1100 -1200 左右。

转载于:https://www.cnblogs.com/kilnt/archive/2005/08/05/208431.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值