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

¿Cómo obtener una fila aleatoria para el día actual?

Utilice una semilla para el generador de números aleatorios en función de la fecha actual:

ORDER BY RAND(20120714) LIMIT 1

También tengo curiosidad sobre lo que quiso decir con "otro" aquí:

Si desea seleccionar un diferente cotización aleatoria cada día, entonces no debería usar un simple ORDER BY RAND(seed) . Esto podría devolver la misma cotización tres días seguidos.

Si desea evitar que esto suceda, puede almacenar qué cotización se selecciona para cada día y elegir una cotización aleatoria de las que no se han utilizado en los últimos n días. Por supuesto, si está almacenando cuándo se usó por última vez una cotización, también hay una solución natural para su problema original:

  • Busque una cita que se usó por última vez hoy.
  • Si hay una, esa es la cita del día.
  • Si no es así, seleccione una nueva cotización del día de las filas que no se han utilizado en los últimos n días y actualice la fila para mostrar que es la cotización del día de hoy.

Bien, ¿qué tal un enfoque ligeramente diferente?

ORDER BY RAND(201207) LIMIT 14, 1
--            yyyymm        dd

Ahora no necesita una columna adicional y no obtendrá repeticiones, excepto quizás cuando cambie el mes. Esta solución asume que tiene al menos 32 cotizaciones para elegir.