Deseo solicitar 5 filas aleatorias de mi tabla SQL usando php. por ejemplo, necesito:Seleccionar una fila aleatoria de SQL usando PHP
mysql_query("SELECT * FROM catalogue >> not sure what goes here << LIMIT 5");
Deseo solicitar 5 filas aleatorias de mi tabla SQL usando php. por ejemplo, necesito:Seleccionar una fila aleatoria de SQL usando PHP
mysql_query("SELECT * FROM catalogue >> not sure what goes here << LIMIT 5");
SELECT * FROM catalogue order by RAND() LIMIT 5
Editar:
Por lo que su valor, Tenga en cuenta que el uso de rand() sobre una mesa con un gran número de filas va a ser lento. Esto puede bloquear tu servidor.
Algunos Solución:
MediaWiki utiliza un truco interesante (para especial de Wikipedia: Random función): la mesa con los artículos tiene una columna adicional con un número aleatorio (genera cuando se crea el artículo). Para obtener un artículo al azar, genere un número aleatorio y obtenga el artículo con el siguiente valor más grande o más pequeño (no recuerdo cuál) en la columna de números aleatorios. Con un índice, esto puede ser muy rápido. (Y MediaWiki está escrito en PHP y desarrollado para MySQL.)
Pero esto es solo para una sola fila al azar.
¿Es bueno usar algo como ... SELECCIONAR * DEL catálogo WHERE user_type = 'normal' ordenar por RAND() LIMIT 5 ???? –
@GuchoCa, sí que estará bien. Una vez que crezca el tamaño de su mesa y empiece a notar un gran tiempo dedicado a esta consulta, tendrá que idear métodos para reducirla, al igual que MediaWiki. – Pheonix
¿qué pasa con la longitud de la tabla (como comprobar cuántos registros tiene la tabla y permite suponer 500K, que es una gran cantidad de registros), entonces simplemente elija aleatoriamente 5 números de ese total y luego extraiga esos 5 registros de la tabla ? – Ali
Si usted está seleccionando al azar filas de una tabla muy grande, es posible que desee experimentar con los enfoques en el siguiente enlace:
http://akinas.com/pages/en/blog/mysql_random_row/
nota: sólo para compartir con todo el mundo otras opciones
Suponiendo que la tabla tiene auto del incremento en usted podría conseguir el mayor identificación con
SELECT id FROM catalogue ORDER BY id DESC LIMIT 1
y el ingenio de ID más pequeño h
SELECT id FROM catalogue ORDER BY id ASC LIMIT 1
por lo que es posible hacer esto
$randomId = mt_rand($smallestId, $biggestId);
$randomSql = mysql_query("SELECT * FROM catalogue WHERE id='$randomId'");
Durante cinco filas que podría crear el ID aleatorio cinco veces.
si ese ID aleatorio falta, sin embargo, la consulta fallará – warren
¿No observas temas relacionados con exactamente la misma pregunta? –