Thomas Chust,您好! the mail num is so many, how can cancel the maillist.
======= 2006-04-16 16:03:00 您在来信中写道:======= >On Sun, 16 Apr 2006, [EMAIL PROTECTED] wrote: > >> Thomas Chust <[EMAIL PROTECTED]> wrote: >>> Hello, >>> >>> I have a table of strings and integer primary keys from which I would like >>> to retrieve a string at random. [...] >> >> I cannot think of a more efficient way to do this if you >> require each output to have equal probability. If you do >> not need each string to have exactly the same probability, >> however, you could do this: >> >> SELECT string FROM strings >> WHERE rowid>=random() (SELECT max(rowid) FROM strings) >> LIMIT 1; > >Hello, > >thank you for the tip. As the SQLite3 '' operator does a remainder >operation not a modulo operation and as the '>=' apparently binds stronger >than the '', I modified this query into > > SELECT string FROM strings > WHERE id >= (abs(random()) (SELECT max(id) FROM strings)) > LIMIT 1; > >This works very fast now and I think I can live with the somewhat less >random result. It doesn't have to have cryptographic quality ;-) > >cu, >Thomas = = = = = = = = = = = = = = = = = = = = 致 礼! 马国庆 [EMAIL PROTECTED] 2006-04-17