sql >> Base de Datos >  >> RDS >> Mysql

MySQL:seleccione una entrada aleatoria, pero peso hacia ciertas entradas

Este tipo hace la misma pregunta. Dice lo mismo que Frank, pero las ponderaciones no salen bien y en los comentarios alguien sugiere usar ORDER BY -LOG(1.0 - RAND()) / Multiplier , que en mis pruebas dio resultados bastante perfectos.

(Si algún matemático quiere explicar por qué esto es correcto, ¡ilumíname! Pero funciona).

La desventaja sería que no podría establecer la ponderación en 0 para deshabilitar temporalmente una opción, ya que terminaría dividiendo por cero. Pero siempre puedes filtrarlo con un WHERE Multiplier > 0 .