2012-03-30 79 views

回答

13

下面將獲得一個隨機questionID從表中

MySQL的

SELECT questionID FROM questions ORDER BY RAND() LIMIT 1 

的MS Access

SELECT top 1 questionID from questions ORDER BY rnd(questionID) 
+8

MS Access的版本似乎確實會產生隨機記錄 - 但每次都是相同的! – kneidels 2013-08-05 13:33:42

+1

AGREE ..同樣的隨機記錄 – 2013-10-21 11:15:37

23

得到不同的隨機記錄,你可以使用,這將需要一個ID字段在你的餐桌上

SELECT TOP 1 questionID FROM questions ORDER BY Rnd(-(100000*questionID)*Time()) 

作爲參數傳遞給Rnd函數的負值將使用此參數作爲起始值傳遞來自生成器的第一個隨機值。 (一種定義的隨機)。 特別感謝@kobik的評論提示。

+2

有趣的事情。我測試了所有建議的答案,包括我得到不同/隨機記錄。但只要我再次運行我的測試程序,結果與以前一樣。就好像隨機種子生成器每次在ms訪問中重置一樣。我後來發現這個: [Random Number Generator Query Not So Random](http://database.ittoolbox.com/groups/technical-functional/access-l/random-number-generator-query-not-so-random- 3887838) – kobik 2013-10-21 11:41:11

+0

它做同樣的事情bummi,每次我運行它我得到相同的4個結果 – 2013-10-21 11:59:13

+0

所以如何建議修復@Kobik – 2013-10-21 12:00:43

4
SELECT TOP 5 questionID FROM [tableName] ORDER BY rnd(INT(NOW*questionID)-NOW*questionID) 

這會給你一套新的答案的每一次,你甚至都不需要彌補的時候,你用「NOW」(這每次都會是一個新的時間,你點擊這個不管點擊速度有多快),在我看來,這是Access中最簡單,最簡單的方法。

+0

這個對我來說完全沒問題。所有其他方法提供相同的記錄集。好工作。 – MatVAD 2017-11-01 06:19:12