Для выбора случайной строки из mysql можно использовать следующий запрос:
SELECT * FROM Table ORDER BY RAND()
Для выбора нескольких случайных строк подойдет следующий запрос:
SELECT * FROM table ORDER BY RAND() LIMIT $kolichestvo
PS: при таблицах большого размера данный запрос не самый эффективный.
В процессе выполнения этого запроса MySQL записывает во временную таблицу все строки исходной таблицы, с одним новым полем, в которое записываются результаты функции RAND () — т.е. набор произвольных значений. Затем эта временная таблица сортируется filesort по добавленному полю с произвольными значениями и далее выбираются первые 10 записей.
Альтернативный вариант выбора случайной строки. Там же логика работы и пояснения.
http://www.titov.net/2005/09/21/do-not-use-order-by-rand-or-how-to-get-random-rows-from-table/