Een geweldige post die verschillende gevallen behandelt, van eenvoudig tot hiaten, tot niet-uniform met hiaten.
http://jan.kneschke.de/projects/mysql/order- door-rand/
Voor de meeste algemene gevallen is dit hoe u het doet:
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
Dit veronderstelt dat de verdeling van id's gelijk is en dat er gaten in de id-lijst kunnen zijn. Zie het artikel voor meer geavanceerde voorbeelden