sql >> Database >  >> RDS >> Mysql

hoe willekeurige unieke records te selecteren bij elke uitvoering van de SQL-query

Aangezien u een seed-parameter kunt doorgeven aan de RAND() functie kunt u de willekeurige resultaten "pagineren" door een seed te genereren voor de eerste pagina.

Voorbeeldcode:Voor de eerste pagina (verschilt per taal):

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

SQL-query:

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

Sla de seed ergens op (voor webgebaseerde toepassingen kunt u een url-parameter of sessie gebruiken). Voor de volgende pagina's:

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

Opmerking:sorteren op RAND() een zware operatie is, kunt u beter een geïndexeerde kolom opslaan met de hashcode van de url, dan een module-gebaseerde of andere willekeurige functies gebruiken.



  1. Hoe toegang te krijgen tot MySQL vanaf een externe computer (niet localhost)?

  2. Is dit de beste manier om een ​​audit trail te creëren?

  3. MySQL 'Onjuiste INTEGER-waarde afgekapt'

  4. Hoe te converteren van varbinary naar char/varchar in mysql