Originariamente inviato da piero.mac
prova l'esempio che trovi sul manuale mysql...
codice:
LOCK TABLES foo READ;
SELECT FLOOR(RAND() * COUNT(*)) AS rand_row FROM foo;
SELECT * FROM foo LIMIT $rand_row, 1;
UNLOCK TABLES;
estrai rand_row e lo rilanci nel LIMIT della query successiva.
Volendo si può fare anche con le "variabili SQL", visto che tanto il valore rand_row non gli serve come dato finale ma è solo un dato intermedio di lavoro, giusto?