/ / Por favor explique esta consulta mysql. - mysql

Por favor, explica esta consulta mysql. - mysql

SELECT * FROM dogs order by rand(dayofyear(CURRENT_DATE)) LIMIT 1

Me parece que ordena una base de datos por un número aleatorio, y este número cambia todos los días. Esto es una conjetura, ya que me llevará un día averiguar si esto es cierto.

¿Cómo puedo cambiar esta consulta para ordenar una base de datos por un nuevo número aleatorio cada minuto en lugar de cada día? Intenté esto:

SELECT * FROM dogs order by rand(minuteofhour(CURRENT_DATE)) LIMIT 1

pero no funcionó :(

¡Gracias por tu tiempo!

Respuestas

4 para la respuesta № 1

Un generador de números aleatorios (RNG) usualmente necesita un"valor inicial", un valor que se utiliza para generar números aleatorios. Si el valor inicial es siempre el mismo, la secuencia de números aleatorios es siempre la misma. Esto explica por qué cambia todos los días.

La forma más fácil de resolver su problema (cámbielo a cada minuto) es encontrar un valor semilla que cambie cada minuto. Una buena seria ROUND(UNIX_TIMESTAMP()/60).

SELECT * FROM dogs order by rand(ROUND(UNIX_TIMESTAMP()/60)) LIMIT 1

0 para la respuesta № 2

No soy bueno en mysql. pero ¿está seguro de que hay una función minuteofhour en mysql?

La idea de la consulta es elegir un registro aleatorio de la base de datos.

puedes hacer esto por SELECCIONAR * DESDE perros ordenados por rand (20) LIMITE 1

ordenará por columna "un número aleatorio de 1-20"


0 para la respuesta № 3

Use el combo de las funciones de MySQL MINUTE () y NOW (). NOW devolverá la fecha actual, y MINUTE le extrae el valor de los minutos.