SELECT * FROM table_name ORDER BY RAND() LIMIT 5;
RAND():0~1.0 隨機浮點數RAND(N):指定種子,相同種子產生相同序列mysql> SELECT RAND(); -- 0.5925
mysql> SELECT RAND(20); -- 0.1811
mysql> SELECT RAND(20); -- 0.1811
mysql> SELECT RAND(); -- 0.2079
mysql> SELECT RAND(); -- 0.7888
ORDER BY RAND() 會對全表掃描、每列計算隨機值、排序。
SELECT *
FROM table_name AS r1
JOIN (
SELECT ROUND(RAND() * (SELECT MAX(id) FROM table_name)) AS id
) AS r2
WHERE r1.id >= r2.id
ORDER BY r1.id ASC
LIMIT 5;
SELECT MAX(id) FROM table_nameROUND(RAND() * max_id)WHERE r1.id >= r2.id ORDER BY r1.id LIMIT 5id