sql >> Databáze >  >> RDS >> Mysql

Problém s výběrem jednoho náhodného řádku z tabulky MySQL

Váš kód vrací několik řádků, protože rand() se vyhodnocuje na každém řádku. Takže máte výměnu několika zápasů. A šance na žádné zápasy.

Můžete použít svůj nápad, ale zkuste to takto:

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

To vygeneruje pouze jednu náhodnou hodnotu, a tedy pouze jeden řádek. Ale s pouhými 46 řádky order by metoda by měla fungovat dostatečně dobře:

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


  1. Pole TEXT, které je kompatibilní s mysql a hsqldb

  2. Jak napsat dotaz MySQL, který vrátí dočasný sloupec obsahující příznaky, zda položka související s tímto řádkem existuje v jiné tabulce

  3. Převod času AM/PM na 24hodinový formát pomocí PHP nebo MySQL?

  4. Jednoduchý rekurzivní strom v PHP / MySQL