sql >> Databasteknik >  >> RDS >> Mysql

Problem med att välja en enda slumpmässig rad från MySQL-tabellen

Din kod returnerar flera rader eftersom rand() utvärderas på varje rad. Så du har ändringen av flera matcher. Och en chans att inga matcher alls.

Du kan använda din idé, men prova den så här:

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

Detta genererar bara ett slumpmässigt värde och därmed bara en rad. Men med bara 46 rader, order by metoden bör fungera tillräckligt bra:

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


  1. Ta bort en post från konsolen -- Ruby on Rails

  2. MySQL Prepare Statement - Maximal längd 1000 tecken

  3. Uppdatera fråga med LEFT JOIN , Variable och Autoincrement med MySQL

  4. ListView Kontroll Dra-släpp Sortera händelser