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

相关推荐
稀饭过霍4 分钟前
数据类型【TINYINT、SMALLINT、INT、BIGINT、decimal(18,2)】表示意思
数据库
俺不要写代码8 分钟前
数据库:DML
数据库·oracle
这个DBA有点耶10 分钟前
两张百万级大表JOIN跑崩了?试试这3招
数据库·代码规范
IntMainJhy16 分钟前
「Flutter三方库sqflite的鸿蒙化适配与实战指南:从入门到踩坑的本地数据库开发全记录」
数据库·flutter·华为·信息可视化·数据库开发·harmonyos
counting money33 分钟前
Spring框架基础(依赖注入-全注解形式)
java·数据库·spring
计算机安禾40 分钟前
【Linux从入门到精通】第33篇:数据库MySQL/MariaDB安装与基础调优
linux·数据库·mysql
瀚高PG实验室44 分钟前
ERROR: invalid input syntax for type integer: “a“
数据库·瀚高数据库
S1998_1997111609•X44 分钟前
论next/js在打击省份及犯罪行为集团的系统分析[特殊字符]设计
网络·数据库·百度·ssh·开闭原则
dfdfadffa1 小时前
如何创建仅在首次订阅时执行一次计算的 RxJS 懒加载 Observable
jvm·数据库·python
Irene19911 小时前
Oracle 中:为什么 from 子查询后面需要一个别名
数据库·oracle