Et fantastisk indlæg, der håndterer adskillige sager, fra simple, til huller, til uensartede med huller.
http://jan.kneschke.de/projects/mysql/order- by-rand/
For de fleste generelle tilfælde gør du sådan her:
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
Dette forudsætter, at fordelingen af id'er er ens, og at der kan være huller i id-listen. Se artiklen for mere avancerede eksempler