How to get random record from MS Access database
Asked Answered
Q

3

14

I have a MS access database. In that, one table consists of questions and answers with primary key questionID. I need to retrieve random question from that table using questionID. What keywords or query should I use for this scenario.

Quadragesima answered 30/3, 2012 at 4:58 Comment(0)
I
16

The following will get a random questionID from your table

MySQL

SELECT questionID FROM questions ORDER BY RAND() LIMIT 1

MS Access

SELECT top 1 questionID from questions ORDER BY rnd(questionID)
Indetermination answered 30/3, 2012 at 5:3 Comment(2)
the version for MS Access, does seem to generate random records - but the same ones each time!Udella
AGREE.. same random recordsTalmudist
T
26

To get different random record you can use, which would require a ID field in your table

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

A negative value passed as parameter to the Rnd-function will deliver the first random value from the generator using this parameter as start value. (A kind of defined randomize). Special thanks to @kobik 's hint from the comments.

Trafficator answered 21/10, 2013 at 11:18 Comment(4)
Funny thing. I have tested all suggested answers including this I get different/random records. but as soon as I run my test program again the results are in the same sequence as before. as if the random seed generator resets each time in ms-access. I later found this: Random Number Generator Query Not So RandomWaterless
it does same thing bummi, each time i run it i get the same 4 resultsTalmudist
so how you suggest to fix @KobikTalmudist
@GlenMorse, There is a working workaround (Bummi, you might wan to edit your answer): ORDER BY NEWID() in MS Access. so using a negative number with Rnd() "fixes" the problem. use: ORDER BY Rnd(-(1000*ID)*Time())Waterless
I
16

The following will get a random questionID from your table

MySQL

SELECT questionID FROM questions ORDER BY RAND() LIMIT 1

MS Access

SELECT top 1 questionID from questions ORDER BY rnd(questionID)
Indetermination answered 30/3, 2012 at 5:3 Comment(2)
the version for MS Access, does seem to generate random records - but the same ones each time!Udella
AGREE.. same random recordsTalmudist
C
5
SELECT TOP 5 questionID FROM [tableName] ORDER BY rnd(INT(NOW*questionID)-NOW*questionID)

This will give you a new set of answers every time, you don't even need to make up a time when you use "NOW" (which will every time be a new time you click this no matter how fast you click), in my opinion the most simple and neat way to solve this in Access.

Conic answered 29/3, 2017 at 7:28 Comment(1)
This one works perfectly okay for me. All other methods gives the same set of records. Good work.Voigt

© 2022 - 2024 — McMap. All rights reserved.