幸运抽奖概念:SQL查询根据外观百分比获取随机选项

时间:2017-06-28 08:58:24

标签: php mysql random

我正在开发一个幸运抽奖概念,如下所示

我们必须根据外观百分比

获取随机选项

数据库表如下

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中尝试过随机函数但无法达到要求。

1 个答案:

答案 0 :(得分:1)

这就是你应该如何做到的:

set @percentage = 100 * rand();
select *
from table_name
order by table_name.percentage >= @percentage, rand()
limit 0, 8;

此查询将随机百分比存储到变量中。然后,我们按两个标准对查询进行排序。第一个标准是percentage的{​​{1}}高于或等于table随机化。这确保了如果在随机percentage之上和之下都有元素,那么上面的元素将是首选。在第一个排序标准中具有类似结果的元素将被随机排序。