随机数算法,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 返回第一条

你可能感兴趣的:(sql,数据库)