2016-04-27 144 views
0

在SQL Server中,我只想選擇一個字段併爲每行分配一個隨機數。將會有超過1M的行數,然後我將隨機數字順序選擇頂部的50K作爲隨機樣本。在sql中使用rand()函數時遇到問題

如果我這樣做:

Select x, rand()*(50000-1)+1) 
From Y 

我得到我想要的一切的x的,但他們每個人都有相同的隨機數。

+0

記得剛取出括號「+1」之後,如果你不使用地板或其他什麼東西,當你生成你的電話號碼。 – Dresden

回答

0

如果僅使用隨機數隨機排序,你可以跳過,而不是隨機數場,並使用

ORDER BY NEWID() 
1

你也許並不需要通過指定的任何值,只是爲了一個僞隨機值,並採取TOP

SELECT TOP 50000 X FROM Y ORDER BY NEWID() 
+0

謝謝。你能簡單解釋一下這是如何工作的? NewID對我來說是新的 – user6114185

+0

@ user6114185:'NEWID()'返回一個GUID,因此每個行都會臨時分配一個新的GUID,所以'ORDER BY'起作用。由於GUID對於所有意圖和目的都是絕對不會重複的,並且它們不是按順序生成的,我們基本上可以相信它對於您來說足夠隨機。 –