随机数算法,SQL

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 返回第一条

相关推荐
剑来.1 分钟前
事务没提交,数据库为什么会越来越慢?
数据库·oracle
韦东东1 小时前
DeepSeek:R1本地RAG 问答: 功能新增,附 六大关键技术优化路径参考
数据库·mysql
Leon-Ning Liu1 小时前
19c RAC 环境 Patch 38326922 应用实战
数据库·oracle
虫小宝1 小时前
优惠券省钱app高并发秒杀系统:基于Redis与消息队列的架构设计
数据库·redis·缓存
赵渝强老师2 小时前
【赵渝强老师】MySQL的数据约束
数据库·mysql
半部论语2 小时前
MySQL 主机被封问题详解:原因、解除方法与预防策略
数据库·mysql
a587694 小时前
Oracle数据库体系结构深度解析:从内核到应用的理论全景
数据库·oracle
高溪流4 小时前
1.MySql概念讲解 及 MySql安装教程
数据库·mysql
语落心生4 小时前
深入doris查询计划以及io调度(四)存储引擎架构
数据库
蓝银草同学4 小时前
MySQL SQL语法详解:带注释的实用示例
前端·数据库