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

Problemas para seleccionar una sola fila aleatoria de la tabla MySQL

Su código devuelve varias filas porque rand() se evalúa en cada fila. Entonces, tienes el cambio de múltiples partidos. Y la posibilidad de que no haya ninguna coincidencia.

Puedes usar tu idea, pero pruébalo de esta manera:

select relusers.uname
from relusers cross join
     (selext @rand := rand()) const
where relusers.users_id = floor(@rand*46+1);

Esto genera solo un valor aleatorio y, por lo tanto, solo una fila. Pero, con solo 46 filas, el order by el método debería funcionar lo suficientemente bien:

select relusers.uname
from relusers
order by rand()
limit 1;