sql >> Database >  >> RDS >> Mysql

Problemen met het selecteren van een enkele willekeurige rij uit de MySQL-tabel

Uw code retourneert meerdere rijen omdat rand() wordt op elke rij geëvalueerd. Je hebt dus de mogelijkheid om meerdere matches te maken. En kans op helemaal geen matches.

Je kunt je idee gebruiken, maar probeer het op deze manier:

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

Dit genereert slechts één willekeurige waarde en dus slechts één rij. Maar met slechts 46 rijen is de order by methode zou goed genoeg moeten presteren:

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


  1. Hoe controleer ik of een MySQL-query met de legacy API is gelukt?

  2. SQL Server-gegevens invoegen in Salesforce.com

  3. Tijdelijke tabellen maken in MySQL Stored Procedure

  4. Het standaardspoor verwijderen - Deel 1