//随机(不要用),这个会造成全表扫描,limit 几 就扫描几次,mysql官方文档已经明确不建议使用了
select * from an_table order by rand() limit ??
//替代方式
SELECT *
FROM an_table AS t1
JOIN
//找出最大ID,随机(0,1),相乘取整
(SELECT ROUND(RAND() * (SELECT MAX(id) FROM an_table)) AS id) AS t2
//ID存在不连续的时候,所以不能只写=
WHERE t1.id >= t2.id
ORDER BY t1.id ASC LIMIT 1
注:该方法每次知道能取一条,如果多条,就多执行几次(可能会存在重复),但效率要高很多,很多