Author Topic: Random row in mySQL  (Read 4300 times)

0 Members and 1 Guest are viewing this topic.

Offline LoneAntiTrustTopic starter

  • Irregular
  • Posts: 1
    • View Profile
    • http://www.theantitrust.net
Random row in mySQL
« on: January 03, 2003, 05:48:02 PM »
ok, i got this code which is supposed to select a random row in mysql.

select * from quotes order by rand() limit 1

i have 10 rows in the table, and i seem to get the same row each time!  i don\'t understand.  maybe after reloading about 50 times i\'ll get one different row, then it will go back to the previous one for another 30 times.  i have no idea why it\'s really not randomizing these.

any ideas?                    

Offline biopv

  • Enthusiast
  • Posts: 267
    • View Profile
    • http://palle.retrosearch.dk
Random row in mySQL
« Reply #1 on: January 06, 2003, 11:45:07 AM »
Use a seed value that differs all the time:

Code: [Select]

select * from quotes order by rand($seed) limit 1



Use some reandom integer in $seed (time or something).

The reason for the problem - probably because you\'re creating a shiny new connection the database each time the page is loaded and the \"not really random\" function in sql returns the same values when a new connection has been initialized (?)....

I think the seed is the solution - BUT remeber that the same seed returns the same random value! It would actually be a lot easier to pick a random row using the following (assuming sql and php or something similar):

Code: [Select]

$seed = random(10);

select * from quotes limit by $seed, 1;// picks 1 row from $seed



P., denmark

Quote
ok, i got this code which is supposed to select a random row in mysql.

select * from quotes order by rand() limit 1

i have 10 rows in the table, and i seem to get the same row each time!  i don\'t understand.  maybe after reloading about 50 times i\'ll get one different row, then it will go back to the previous one for another 30 times.  i have no idea why it\'s really not randomizing these.

any ideas?
                   
Palle Villesen, www.birc.dkBioinformatics Research Center

Offline biopv

  • Enthusiast
  • Posts: 267
    • View Profile
    • http://palle.retrosearch.dk
Random row in mySQL
« Reply #2 on: January 06, 2003, 11:50:46 AM »
Just a quickie:

If using pure sql:

Code: [Select]

select * from quotes order by rand(time_to_sec(curtime())) limit 1



This would use the number of seconds as seed...

P., denmark                    
Palle Villesen, www.birc.dkBioinformatics Research Center