sql >> Base de Datos >  >> RDS >> Mysql

cómo seleccionar registros únicos aleatorios en cada ejecución de la consulta SQL

Dado que puede pasar un parámetro semilla a RAND() función, puede "paginar" los resultados aleatorios generando una semilla antes de la primera página.

Código de muestra:Para la primera página (varía según el idioma):

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

Consulta SQL:

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

Guarde la semilla en algún lugar (para aplicaciones basadas en web puede usar un parámetro de URL o una sesión). Para las siguientes páginas:

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

Nota:Ordenar por RAND() es una operación pesada, es mejor que almacene una columna indexada con el código hash de la URL y luego use una función basada en módulos u otras funciones aleatorias.