sql server:随机更新表

时间:2011-03-17 01:08:59

标签: sql sql-server

我有一个包含2列样本数据的表。 Column1是主键,并与其他几个表绑定。第2列是一个随机范围从1到5的int。我正在寻找一种方法来更改第2列中的数据,使其范围从1到8.我不是SQL专家,我想知道什么是最简单的方法。有大约3400条记录,所以我想我可以手动进入并随机输入数字,但我确信有更好的方法可以做到。

有什么建议吗?

感谢。

3 个答案:

答案 0 :(得分:5)

您可以使用RAND()功能。好吧,你可以使用它,如果它像某人想象的那样工作。

这将 NOT 在Sql-Server中工作:

UPDATE tableT
  SET column2 = CAST(1 + (RAND() * 8) AS INT)
;

但这样做:

UPDATE tableT
  SET column2 = 1 + 8 * RAND( CHECKSUM( NEWID() ) )
;

答案 1 :(得分:3)

rand()每次查询只评估一次。因此,您的所有column2值都将相同。

对于SQL Server 2008,您可以使用

UPDATE tableT
  SET column2 = 1+ (CRYPT_GEN_RANDOM(1) % 8)

对于早期版本

UPDATE tableT
  SET column2 = 1+ (abs(checksum(NewId())) % 8)

答案 2 :(得分:0)

我认为你的回答实际上会回归NINE,对吧?

我试试这个

UPDATE tableT SET column2 = CAST(1 +(RAND()* 7)AS INT);