原理
- 利用主键ID索引的特性,通过最大的ID乘以一个随机数得到一个随机的ID;
- 将随机的ID作为临时表;
- 将原表和临时表利用主键ID关联;
- 利用主键ID排序,只取一条数据。
示例SQL
SELECT
t3.*
FROM
(
SELECT
t1.*
FROM table t1 INNER JOIN
(SELECT ROUND(RAND() * (SELECT MAX(id) FROM table)) id) t2 ON t1.id >= t2.id
ORDER BY t1.id ASC LIMIT 0,1
) t3