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