一个伟大的职位处理几个案件,从简单的,到差距,非统一的差距.
http://jan.kneschke.de/projects/mysql/order-by-rand/
对于大多数情况,以下是您的操作方法:
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
这假设id的分布是相等的,并且id列表中可能存在空白.有关更高级的示例,请参阅本文