Din kode returnerer flere rækker, fordi rand()
vurderes på hver række. Så du har ændringen af flere kampe. Og en chance for slet ingen kampe.
Du kan bruge din idé, men prøv den på denne måde:
select relusers.uname
from relusers cross join
(selext @rand := rand()) const
where relusers.users_id = floor(@rand*46+1);
Dette genererer kun én tilfældig værdi og dermed kun én række. Men med kun 46 rækker er order by
metoden skal fungere godt nok:
select relusers.uname
from relusers
order by rand()
limit 1;