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
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;
id)若需真正隨機的多行(非連續區塊),可重複執行上述查詢多次,或結合應用層邏輯處理。