如何从MS Access数据库中获取随机记录

use*_*809 14 random ms-access

我有一个MS访问数据库.其中,一个表由主键questionID的问题和答案组成.我需要使用questionID从该表中检索随机问题.我应该为此方案使用哪些关键字或查询.

bum*_*mmi 24

要获得可以使用的不同随机记录,这将需要表中的ID字段

SELECT TOP 1 questionID FROM questions ORDER BY Rnd(-(100000*questionID)*Time())
Run Code Online (Sandbox Code Playgroud)

作为参数传递给Rnd函数的负值将使用此参数作为起始值从生成器传递第一个随机值.(一种定义的随机化).特别感谢@kobik的评论提示.

  • @GlenMorse,有一个可行的解决方法(Bummi,你可能想编辑你的答案):[在MS Access中订购NEWID()](http://oxle.com/topic.asp?archive=true&tid=3514).所以使用负数和`Rnd()`"修复"问题.使用:`ORDER BY Rnd( - (1000*ID)*Time())` (8认同)
  • 有趣的事情.我测试了所有建议的答案,包括我得到的不同/随机记录.但是一旦我再次运行我的测试程序,结果与之前的顺序相同.好像随机种子生成器每次都在ms访问时重置.我后来发现了这个:[随机数生成器查询不那么随机](http://database.ittoolbox.com/groups/technical-functional/access-l/random-number-generator-query-not-so-random-3887838 ) (2认同)

Sup*_*Rod 15

以下内容将从您的表中获得随机的questionID

MySQL的

SELECT questionID FROM questions ORDER BY RAND() LIMIT 1
Run Code Online (Sandbox Code Playgroud)

MS Access

SELECT top 1 questionID from questions ORDER BY rnd(questionID)
Run Code Online (Sandbox Code Playgroud)

  • MS Access的版本似乎确实生成了随机记录 - 但每次都是相同的记录! (8认同)