Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Problem z wyborem pojedynczego losowego wiersza z tabeli MySQL

Twój kod zwraca wiele wierszy, ponieważ rand() jest oceniany w każdym rzędzie. Więc masz zmianę wielu meczów. I szansa na całkowity brak dopasowań.

Możesz wykorzystać swój pomysł, ale wypróbuj go w ten sposób:

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

To generuje tylko jedną losową wartość, a więc tylko jeden wiersz. Ale mając tylko 46 wierszy, order by metoda powinna działać wystarczająco dobrze:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie SQL do utworzenia bazy danych w MySQL

  2. Czy powinienem pingować serwer mysql przed każdym zapytaniem?

  3. C# Zbyt wiele połączeń w MySQL

  4. Problemy ze sprawdzeniem, czy tabela istnieje, czy nie w db

  5. Jak zapobiec resetowaniu wartości automatycznego przyrostu przez mySQL?