none
请问还有没有更简单的方法插入插入基数 偶数 RRS feed

  • 问题

  • 我想在一个表里面插入100W行数据,为了使数据更加随机,我想在基数行和偶数行插入不同的数据我的做法是这样的

    USE pratice 
    DECLARE @MyCounter INT /*计数*/
    DECLARE  @rownumber INT   /*存放行ID*/
    SET @MyCounter = 1 /*设置变量*/
    SET @rownumber =0
    
    WHILE @MyCounter <=10  
    BEGIN 
    
    SELECT TOP 1 @rownumber= a FROM dbo.test ORDER BY a DESC 
    IF   (@rownumber+1)%2<>0
    INSERT INTO dbo.test 
    SELECT @MyCounter,'你好','2011-8-1 21:21:00','基数',@MyCounter
    ELSE 
    INSERT INTO dbo.test 
    SELECT @MyCounter,'你不好','2011-8-2 21:21:00','偶数',@MyCounter
    
    SET @MyCounter = @MyCounter + 1
    END 

    目前只插入10条数据,不知道sqlserver有没有其他函数可以判断基数行偶数行,还有不知道有没有random之类的函数能做到更随机

    表结构


    给我写信: QQ我:点击这里给我发消息

    2012年5月23日 10:25

答案

全部回复

  • 除非显式排序(在查询中使用 ORDER BY ),否则记录是无序的,就算存储在表里面,也是顺序顺序,跟查询出来的显示顺序不一定是一样的

    所以这个奇数/偶数行是没有什么意义的

    你可以直接插入 50W记录,id 是 从1增加的,做为偶数行,再插入 50W记录,ID是从-1递减的,做为奇数行,查询的时候按 “ID 的绝对值和 ID ”排序就行了

    2012年5月24日 0:50
  • --含小数值的随机正数
    select rand()*100
    --随机正整数
    select cast((rand()*100) as int)
    
    --随机正整数
    select ABS(CHECKSUM(NEWID()))%10
    --随机正负整数
    select CHECKSUM(NEWID())%10

    2012年5月24日 1:06
    版主
  • 在MSDN里查询里CHECKSUM函数,但是还是不明白这个函数干嘛用的?

    给我写信: QQ我:点击这里给我发消息

    2012年5月24日 1:40
  • 在MSDN里查询里CHECKSUM函数,但是还是不明白这个函数干嘛用的?

    给我写信: QQ我:点击这里给我发消息


    哈希值,一般用 CHECKSUM(newid()) 在批量查询中生成随机数字
    2012年5月24日 2:21
  • 生成的数字中有负数哦

    给我写信: QQ我:点击这里给我发消息

    2012年5月24日 4:02
  • --随机生成@a到@b之间的整数
    declare @a int,@b int
    select @a=1,@b=20
    select @a+cast(rand()*@b as int)


    2012年5月24日 5:30
    版主
  • 还是谢谢你们,虽然跟我的回复不是很符合

    给我写信: QQ我:点击这里给我发消息

    2012年5月24日 9:11