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 .