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