Mysql
 sql >> Datenbank >  >> RDS >> Mysql

wie man bei jeder Ausführung der SQL-Abfrage zufällige eindeutige Datensätze auswählt

Da Sie einen Seed-Parameter an RAND() übergeben können Funktion können Sie die Zufallsergebnisse "paginieren", indem Sie vor der ersten Seite einen Seed erzeugen.

Beispielcode:Für die erste Seite (variiert je nach Sprache):

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

SQL-Abfrage:

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

Speichern Sie den Seed irgendwo (für webbasierte Anwendungen können Sie einen URL-Parameter oder eine Sitzung verwenden). Für die nächsten Seiten:

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

Hinweis:Sortierung nach RAND() eine schwere Operation ist, ist es möglicherweise besser, eine indizierte Spalte mit dem Hash-Code der URL zu speichern, als eine modulbasierte oder andere Zufallsfunktion zu verwenden.