我有一個大表,其中,爲了測試目的,我想更新一列到每行不同的隨機值。如何在一個步驟中用隨機數據批量更新SQL表?
如果我說:
update MyTable
set MyCol = Rand()*100
則該值爲,的確,隨機 - 但它應用到每一行相同的隨機數。
我可以使用遊標迭代並逐一更新每一行,這顯然是我會在必要時回退的。但是有沒有一些SQL語法會在一個簡潔的語句中用不同的隨機值更新每一行?
我有一個大表,其中,爲了測試目的,我想更新一列到每行不同的隨機值。如何在一個步驟中用隨機數據批量更新SQL表?
如果我說:
update MyTable
set MyCol = Rand()*100
則該值爲,的確,隨機 - 但它應用到每一行相同的隨機數。
我可以使用遊標迭代並逐一更新每一行,這顯然是我會在必要時回退的。但是有沒有一些SQL語法會在一個簡潔的語句中用不同的隨機值更新每一行?
您需要種子RAND
按每行在新的東西:
RAND(CHECKSUM(NEWID()))
UPDATE MyTable
SET MyCol = CAST(RAND(CHECKSUM(NEWID())) * 10 as INT) + 1
你可以用表的主密鑰種子的隨機功能?
update MyTable
set MyCol = Rand(MyIDColumn)*100
+1這是一個很好的答案 - 但通過ID列播種可以使連續的ID值生成非常接近的「隨機」值。 'NewID()'得到更好的結果。 – 2013-02-14 10:37:04