Страхотна публикация, обработваща няколко случая, от прости, до пропуски, до нееднородни с пропуски.
http://jan.kneschke.de/projects/mysql/order- по-ранд/
За най-общ случай, ето как го правите:
SELECT name
FROM random AS r1 JOIN
(SELECT CEIL(RAND() *
(SELECT MAX(id)
FROM random)) AS id)
AS r2
WHERE r1.id >= r2.id
ORDER BY r1.id ASC
LIMIT 1
Това предполага, че разпределението на идентификаторите е равно и че може да има пропуски в списъка с идентификатори. Вижте статията за по-разширени примери