2011-03-17 96 views
2

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

有什么建议吗?

谢谢。

回答

5

您可以使用RAND()函数。那么,如果按照某人的设想工作,你可以使用它。

在SQL-Server此将工作:

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

但这:

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

这将导致'column2'在具有SQL Server中的相同值的3400行。 – 2011-03-17 02:22:16

+0

糟糕,thnx马丁。你是绝对正确的。 – 2011-03-17 03:01:17

0

我认为你的答案实际上将返回九,对不对?

我想尝试这个代替

UPDATE SET片剂列2 = CAST(1 +(RAND()* 7)AS INT);

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)