sql
SELECT
*
FROM
prizes_config
WHERE
weight > ( SELECT FLOOR( RAND() * MAX( weight )) FROM prizes_config )
order by weight asc
-- LIMIT 1;
记录
id 权重
1 5
2 10
3 50
4 100
找权重最大的那个值,调用rand()函数,它会随机生成一个0-1的值
然后 rand * 100 得出一个随机值
它的范围 0 <= 随机值 < 100
例如本次随机值为2,那么找到 大于2的所有记录,然后升序
此时查询结果为
2 10
3 50
4 100
最后LIMIT 1 返回第一条