2013-02-14 73 views
3

我有一個大表,其中,爲了測試目的,我想更新一列到每行不同的隨機值。如何在一個步驟中用隨機數據批量更新SQL表?

如果我說:

update MyTable 
set MyCol = Rand()*100 

則該值爲,的確,隨機 - 但它應用到每一行相同的隨機數。

我可以使用遊標迭代並逐一更新每一行,這顯然是我會在必要時回退的。但是有沒有一些SQL語法會在一個簡潔的語句中用不同的隨機值更新每一行?

回答

3

您需要種子RAND按每行在新的東西:

RAND(CHECKSUM(NEWID()))

2

你可以用表的主密鑰種子的隨機功能?

update MyTable 
set MyCol = Rand(MyIDColumn)*100 
+0

+1這是一個很好的答案 - 但通過ID列播種可以使連續的ID值生成非常接近的「隨機」值。 'NewID()'得到更好的結果。 – 2013-02-14 10:37:04