我想对表执行更新查询,并将2列设置为随机值。这是一个例子:
Update Network_Info_Detail set ART = (rand()*4000)+2, NRT = (rand()*1000)+2
很明显,所有行都会使用随机生成的相同值进行更新,因此我需要创建一个循环来为每行生成一个随机值。
DECLARE @size integer
SET @size = (SELECT Count(*) from Network_Info_Detail)
While @size > 1
BEGIN
Update top (@size) Network_Info_Detail set ART = (rand()*4000)+2, NRT = (rand()*1000)+2
SET @size = @size - 1
END
此脚本更新具有不同数字的行,但速度非常慢。有没有办法改善执行时间?
答案 0 :(得分:4)
您可以使用SQL Server技巧生成随机数:rand(checksum(newid()))
。
Update Network_Info_Detail
set ART = (rand(checksum(newid()))*4000)+2,
NRT = (rand(checksum(newid()))*1000)+2;