Mysql
 sql >> Database >  >> RDS >> Mysql

Problema nella selezione di una singola riga casuale dalla tabella MySQL

Il tuo codice restituisce più righe perché rand() viene valutato su ogni riga. Quindi, hai il cambio di più corrispondenze. E una possibilità di nessuna corrispondenza.

Puoi usare la tua idea, ma prova in questo modo:

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

Questo genera solo un valore casuale e quindi solo una riga. Ma, con solo 46 righe, order by il metodo dovrebbe funzionare abbastanza bene:

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