在MySQL中,我們經(jīng)常需要按照某個(gè)字段進(jìn)行分組,并從每個(gè)分組中隨機(jī)選取一定數(shù)量的數(shù)據(jù),這是非常常見(jiàn)的需求。
下面我們來(lái)看一下如何實(shí)現(xiàn):
SELECT * FROM ( SELECT * FROM 表名 ORDER BY RAND() ) tmp GROUP BY 分組字段 LIMIT 數(shù)量;
上面的語(yǔ)句中,首先通過(guò)ORDER BY RAND()
將表中數(shù)據(jù)隨機(jī)排序,然后再通過(guò)GROUP BY
對(duì)數(shù)據(jù)根據(jù)分組字段進(jìn)行分組,最后再使用LIMIT
來(lái)控制每個(gè)分組中選取的數(shù)量。
需要注意的是,這種方式雖然可以實(shí)現(xiàn)想要的功能,但是效率并不高,如果數(shù)據(jù)量比較大,建議使用其他更加高效的方式。
SELECT * FROM 表名 AS t1 JOIN ( SELECT ROUND( RAND() * ( SELECT MAX(id) FROM 表名 ) ) AS id ) AS t2 WHERE t1.id >= t2.id GROUP BY 分組字段 LIMIT 數(shù)量;
上面的語(yǔ)句利用了子查詢和 JOIN 操作,可以更加高效地實(shí)現(xiàn)分組隨機(jī)選取的功能。
上一篇html小游戲代碼大全
下一篇html小游戲插入代碼