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 左右。
Oracle,随机查询20条
select * from
(
  select  *   from 表名
  order by dbms_random.value
)
  where rownum < = 20;
2.MS SQL Server,随机查询20条
select top 20    * from  表名order by newid()
3.My SQL:,随机查询20条
select  *  from  表名 order by rand() limit 20

posted on 2007-10-26 18:38  一路前行  阅读(5713)  评论(1编辑  收藏  举报