一个表中有10万条数据,如何对这些记录做随机的抽取?

解决方案 »

  1.   

    使用 RAND
    RAND 函数计算 0 到 1 之间的随机浮点数,而且可选择以 tinyint、int 或 smallint 值作为要计算的随机数的起始点。下面的示例计算两个随机数。第一个 RAND() 函数让 Microsoft® SQL Server™ 选取种子值,第二个 RAND() 函数使用值 3 作为起始位置。SELECT RAND(), RAND(3)RAND 函数是伪随机的数字生成器,它用与 C 运行时库 rand 函数类似的方法进行操作。如果没有提供种子值,系统将生成它自己的不定种子值。如果用种子值调用 RAND,则必须使用不定的种子值来生成随机数。如果用同一种子值多次调用 RAND,它将返回相同的生成值。下面的脚本中,对 RAND 的调用都返回相同的值,这是因为它们都使用了相同的种子值:SELECT RAND(159784)
    SELECT RAND(159784)
    SELECT RAND(159784)通常用 RAND 生成随机数的方法是,用相对不定的某个值作为种子值,例如累加 GETDATE 的几个部分:SELECT RAND( (DATEPART(mm, GETDATE()) * 100000 )
               + (DATEPART(ss, GETDATE()) * 1000 )
               + DATEPART(ms, GETDATE()) )使用基于 GETDATE 的算法生成种子值时,如果在算法中所用的最小 datepart 的时间间隔内多次调用 RAND,RAND 仍会生成重复值。如果对 RAND 的调用包括在单个批处理中,尤其可能出现这种情况。在单个批处理中对 RAND 的多次调用可在同一毫秒(DATEPART 的最小增量)内执行。这种情况下,请用基于除时间之外的值以生成种子值。
      

  2.   

    select top n * from jobs order by newId()
    随机抽取n条数据
      

  3.   

    请问~~~各位大哥~~~楼上到底谁算"2楼"????是soyisoft还是meiqingsong???
      

  4.   

    SELECT TOP 2 * 
    FROM 1.csv 
    ORDER BY (Rnd(抽取号码)) 
    结果报一个错误
    [Micrisift][ODBC Text Driver]无效的null使用
      

  5.   

    meiqingsong所写的“select top n * from jobs order by newId()”
    其中NEWID()是什么?
      

  6.   

    meiqingsong所写的“select top n * from A.CSV order by newId()”
    其中NEWID()是什么?
    由于是ODBC连接一个CSV,所以在使用中我想应该与ORACLE、MSSQL应该有不同的地方。
    系统显示“newid()函数未定义”。难道不需要使用RND()函数吗?
    如果我的记录在20万左右,是不是应该这样写:
    SELECT TOP 2 * FROM A.csv ORDER BY (Rnd(200000))请大家指正。
      

  7.   

    在VB中可以用Randomize先初始化随机数生成器,这样可以保证数据的不重复
      

  8.   

    RAND
    返回 0 到1 之间的随机float 值。语法
    RAND ( [ seed ] ) 参数
    seed是给出种子值或起始值的整型表达式(tinyint、smallint 或 int)。返回类型
    float注释
    在单个查询中反复调用 RAND() 将产生相同的值。示例
    下例产生 4 个通过 RAND 函数产生的不同的随机值。DECLARE @counter smallint
    SET @counter = 1
    WHILE @counter < 5
       BEGIN
          SELECT RAND(@counter) Random_Number
          SET NOCOUNT ON
          SET @counter = @counter + 1
          SET NOCOUNT OFF
       END
    GO下面是结果集:Random_Number                                         
    ------------------- 
    0.71359199321292355(1 row(s) affected)Random_Number                                         
    ------------------- 
    0.7136106261841817(1 row(s) affected)Random_Number                                         
    ------------------- 
    0.71362925915543995(1 row(s) affected)Random_Number                                         
    ------------------- 
    0.7136478921266981(1 row(s) affected)SQL的帮助文档