sql >> Databasteknik >  >> RDS >> Mysql

MySQL:Välj Random Entry, men vikt mot vissa poster

Den här killen ställer samma fråga. Han säger detsamma som Frank, men viktningarna kommer inte ut rätt och i kommentarerna föreslår någon att du använder ORDER BY -LOG(1.0 - RAND()) / Multiplier , vilket i mina tester gav ganska perfekta resultat.

(Om någon matematiker där ute vill förklara varför detta är korrekt, vänligen upplys mig! Men det fungerar.)

Nackdelen skulle vara att du inte kunde ställa in viktningen till 0 för att tillfälligt inaktivera ett alternativ, eftersom du skulle sluta dividera med noll. Men du kan alltid filtrera bort det med en WHERE Multiplier > 0 .



  1. mysql, iterera genom kolumnnamn

  2. Där villkor för sammanfogat bord i Sequelize ORM

  3. Postgresql COPY-kommandot som ger Behörighet nekad fel

  4. Konfigurera startmiljön i SQL Server Management Studio (SSMS) - SQL Server / TSQL självstudie del 7