zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Shell脚本——DHCP自动部署
    Shell脚本——DNS自动部署
    (四)跟我一起玩Linux网络服务:DHCP服务配置之中继代理
    Java-线索二叉树的实现
    Java-堆排序
    Java-二叉树-插入、删除、遍历
    Java-进制转换
    Java--消除重复数字后的最大值
    Java-动态规划-最多苹果数量的方法
    Java-Pi的几种实现
  • 原文地址:https://www.cnblogs.com/zhangpengshou/p/939075.html
Copyright © 2011-2022 走看看