2014-05-20 77 views
4

我想對錶進行更新查詢並將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

添加了sql-server標記,因爲語法(和問題)顯然是SQL Server。 –

回答

4

您可以使用SQL Server技巧生成一個隨機數:rand(checksum(newid()))

Update Network_Info_Detail 
    set ART = (rand(checksum(newid()))*4000)+2, 
     NRT = (rand(checksum(newid()))*1000)+2; 
+0

太棒了,非常感謝! – AboutNothing