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

jak wybrać losowe unikalne rekordy przy każdym wykonaniu zapytania SQL

Ponieważ możesz przekazać parametr seed do RAND() funkcji, możesz "stronicować" losowe wyniki, generując ziarno przed pierwszą stroną.

Przykładowy kod:Dla pierwszej strony (w zależności od języka):

int seed = Math.abs(new Random().nextInt());

Zapytanie SQL:

SELECT url FROM masterurls ORDER BY RAND({seed}) LIMIT 200;

Przechowuj ziarno gdzieś (w przypadku aplikacji internetowych możesz użyć parametru adresu URL lub sesji).Dla następnych stron:

SELECT url FROM masterurls ORDER BY RAND({seed}) LIMIT 200 * {pageNumber}, 200;

Uwaga:sortowanie według RAND() jest ciężką operacją, lepiej byłoby zapisać zaindeksowaną kolumnę z kodem skrótu adresu URL, a następnie użyć funkcji opartych na module lub innych losowych funkcji.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jaki jest sens serializacji tablic, aby przechowywać je w bazie danych?

  2. Komponowanie stosu — uproszczenie wdrażania kontenerów MySQL przez Docker

  3. Dwie wygenerowane wartości w doktrynie

  4. Przechowywanie HTML w MySQL:blob czy tekst?

  5. Docker MySQL - nie można połączyć się z aplikacji Spring Boot do bazy danych MySQL