第一个:最简便 性能最差的:
SELECT * FROM tb_goods ORDER BY RAND() limit 3;
第二个:性能比较好但是只能出来一条的:
SELECT *
FROM `goods` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(goods_id) FROM `goods`)-(SELECT MIN(goods_id) FROM `goods`))+(SELECT MIN(goods_id) FROM `goods`)) AS id) AS t2
WHERE t1.goods_id >= t2.id
ORDER BY t1.goods_id LIMIT 1;
http://database.51cto.com/art/201010/229981.htm
本文介绍两种从MySQL数据库中随机抽取记录的方法。第一种方法简单但性能较差,使用ORDER BY RAND()进行随机排序并限制返回数量。第二种方法性能较好但仅能获取一条随机记录,通过计算最大最小ID差值再加权随机选取。
476

被折叠的 条评论
为什么被折叠?



