我正在开发一个幸运抽奖概念,如下所示
我们必须根据外观百分比
获取随机选项数据库表如下
option_id | option_name | option_type | option_in_day(%) | option_status
----------------------------------------------------------------------
1 $2 Off 2 100 1
2 $3 Off 2 95 1
3 $4 Off 2 95 1
4 $5 Off 2 90 1
5 $8 Off 2 90 1
6 $60 Cashback 2 10 1
7 $100 Cashback 2 5 1
8 Umbrela 2 50 1
9 Iphone 2 2 1
10 International
Tour 2 1 1
11 Fidget
Spinner 2 70 1
12 Free
membership 2 30 1
13 Samsung S8 2 10 1
14 $20 Off 2 60 1
15 Travel Card 2 50 1
16 Soft Toys 2 70 1
现在从这张表中我想根据百分比获得随机8选项。
在结果中检索的百分比选项机会将减少。
我在sql中尝试过随机函数但无法达到要求。
答案 0 :(得分:1)
这就是你应该如何做到的:
set @percentage = 100 * rand();
select *
from table_name
order by table_name.percentage >= @percentage, rand()
limit 0, 8;
此查询将随机百分比存储到变量中。然后,我们按两个标准对查询进行排序。第一个标准是percentage
的{{1}}高于或等于table
随机化。这确保了如果在随机percentage
之上和之下都有元素,那么上面的元素将是首选。在第一个排序标准中具有类似结果的元素将被随机排序。