Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL:seleziona voce casuale, ma pondera verso determinate voci

Questo ragazzo fa la stessa domanda. Dice lo stesso di Frank, ma i pesi non escono bene e nei commenti qualcuno suggerisce di usare ORDER BY -LOG(1.0 - RAND()) / Multiplier , che nei miei test ha dato risultati praticamente perfetti.

(Se qualche matematico là fuori vuole spiegare perché questo è corretto, per favore illuminami! Ma funziona.)

Lo svantaggio sarebbe che non è possibile impostare la ponderazione su 0 per disabilitare temporaneamente un'opzione, poiché si finirebbe per dividere per zero. Ma puoi sempre filtrarlo con un WHERE Multiplier > 0 .