2012-11-15 28 views
4

是否可以在MySQL中爲RAND()函數設置種子? 我需要這個單元測試,以確保我知道預期的結果是什麼。mysql爲rand設置種子

在PHP人會簡單地做:

<?php srand(12345); echo rand(); ?> 

在我的模型我現在有一個查詢,如:

SELECT * FROM table ORDER BY RAND() LIMIT 1; 

現在在我的單元測試,我想確保我知道什麼種子對於RAND()是我知道查詢返回哪條記錄。

也許通過在我的模型中的查詢之前執行額外的查詢?

我知道我可以給RAND()添加參數,但這不是我想要的;我不想修改查詢。

PS。我正在使用Linux;它將有助於爲/ dev/random設置種子嗎?

回答

1

您可以參考這個:MySQL RAND with with parameter

RAND功能支持將被用作種子參數RAND(N)

+0

我知道,但後來我不得不修改查詢,這不是我想要的。 – meijuh

0

通常,我們不會單元測試一個SQL函數,我們會單元測試調用SQL函數的代碼。

所以也許而不是測試一個具體的返回值,只是測試你得到一些價值。如果查詢返回一個值,那麼您知道它正在「運行」,並且您仍然與MySQL的內部技術無關。您也不必修改您的查詢。

+0

是的,我想我必須要這樣做。所以沒有辦法設置種子? – meijuh

+0

僅作爲@Plamen Nikolov建議的參數。 – OrangeWombat

+0

不幸的是,在一個查詢中設置種子不會影響後續對RAND()的調用。 – OrangeWombat