SELECT * FROM `tablename` ORDER BY RAND() LIMIT 5
通常需要做随机查询的时候我都会想到MySQL的Rand()函数, 即上面的方法, 但很少用, 今天试了一下, 效率超低, 根本没法满足需求, 所以只好求助Google大神了(我喜欢Google的新style^^), 最后于老蒋处学了一招, 别说, 还真挺管用的
SELECT * FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`))+(SELECT MIN(id) FROM `table`)) AS id) AS t2 WHERE t1.id >= t2.id ORDER BY t1.id LIMIT 1;
Comments