sql server:更新表随机
问题描述:
我有一个包含2列样本数据的表。 Column1是主键,并与其他几个表绑定在一起。第2列是一个int,它的随机范围是1到5.我正在寻找一种方法来更改第2列中的数据,使其范围为1到8.我不是SQL专家,我想知道什么是最简单的方法来做到这一点。大约有3400条记录,所以我想我可以手动进入并随机输入数字,但我相信有更好的方法来做到这一点。sql server:更新表随机
有什么建议吗?
谢谢。
答
您可以使用RAND()
函数。那么,如果按照某人的设想工作,你可以使用它。
在SQL-Server此将不工作:
UPDATE tableT
SET column2 = CAST(1 + (RAND() * 8) AS INT)
;
但这:
UPDATE tableT
SET column2 = 1 + 8 * RAND(CHECKSUM(NEWID()))
;
答
我认为你的答案实际上将返回九,对不对?
我想尝试这个代替
UPDATE SET片剂列2 = CAST(1 +(RAND()* 7)AS INT);
答
rand()
仅对每个查询评估一次。所以你所有的column2
值都是一样的。
对于SQL Server 2008可以使用
UPDATE tableT
SET column2 = 1+ (CRYPT_GEN_RANDOM(1) % 8)
对于早期版本
UPDATE tableT
SET column2 = 1+ (abs(checksum(NewId())) % 8)
这将导致'column2'在具有SQL Server中的相同值的3400行。 – 2011-03-17 02:22:16
糟糕,thnx马丁。你是绝对正确的。 – 2011-03-17 03:01:17