Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL:Zufallseintrag auswählen, aber auf bestimmte Einträge gewichten

Dieser Typ stellt dieselbe Frage. Er sagt dasselbe wie Frank, aber die Gewichtungen kommen nicht richtig heraus und in den Kommentaren schlägt jemand vor, ORDER BY -LOG(1.0 - RAND()) / Multiplier zu verwenden , was in meinen Tests ziemlich perfekte Ergebnisse lieferte.

(Wenn irgendwelche Mathematiker da draußen erklären wollen, warum das richtig ist, klärt mich bitte auf! Aber es funktioniert.)

Der Nachteil wäre, dass Sie die Gewichtung nicht auf 0 setzen könnten, um eine Option vorübergehend zu deaktivieren, da Sie am Ende durch Null dividieren würden. Aber Sie könnten es immer mit einem WHERE Multiplier > 0 herausfiltern .