2017-06-28 18 views
3

我開發一個抽獎概念的百分比來獲得隨機選項如下抽獎概念:SQL查詢依據外觀

有將在數據庫中的多個選項,我們必須根據外觀的百分比來獲得隨機選擇

數據庫中的表是從這個表我想按百分比獲得隨機8選項下面

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 

現在。

在結果中檢索的百分比選項機會會更少。

我已經嘗試過在sql中的隨機函數,但無法達到要求。

+0

檢查此[鏈接](https://stackoverflow.com/questions/580639/how-to-randomly-select-rows-in-sql)。你試過這個嗎? 'SELECT * FROM table_name ORDER BY RAND() LIMIT 8' – Regolith

+0

我已經試過@Regolith,但我必須根據數據中給出的百分比 – Kashyap

回答

1

這是你如何能做到這一點:

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

這個查詢存儲隨機百分比到一個變量。然後,我們通過兩個標準來排序查詢。第一個標準是tablepercentage高於或等於percentage隨機。這確保瞭如果在隨機化percentage之上和之下都存在元素,則上述元素將是優選的。在第一個排序標準中具有相似結果的元素將被隨機排序。