EspañolDeutschFrançaisItalianoPortuguêsРусскийΕλληνικά日本語中文(简体)हिन्दी; हिंदीالعربية
PF Preguntas - Foro

Cómo obtener resultados aleatorios en consultas de MySQL

Programación MySQL   Píldoras  
 
Cómo obtener resultados aleatorios en consultas de MySQL

MySQL tiene un conjunto de funciones integradas en el propio lenguaje para diversas finalidades. Entre ellas está la función rand() que, si sueles usar otros lenguajes de programación, podrás imaginar que se usa para generar números aleatorios.

Así, si quieres probar dicha función, simplemente ejecuta la siguiente consulta varias veces, y verás como en cada ejecución el resultado cambia aleatoriamente:

Esta consulta mostrará un número aleatorio entre 0 y 1 cada vez que la ejecutes.

Esta función rand() nos es bastante útil si queremos que los resultados arrojados por alguna consulta en SQL sean aleatorios. Por ejemplo, imagina que queremos mostrar, cada vez que un usuario visite nuestra web, uno de los comentarios que cualquier otro usuario ha realizado sobre la misma. Es decir, entre todos los comentarios que tenemos guardados en la base de datos MySQL, obtendríamos uno al azar, y para ello, podríamos usar la función rand() del propio lenguaje de la siguiente forma:

Con esto, estaríamos obteniendo solo un resultado, ya que hemos limitado la consulta (LIMIT 1), de todos los comentarios de nuestra tabla. Y además, estaríamos obteniendo uno al azar ya que hemos realizado un ORDER BY rand(), por lo que en cada ejecución de dicha consulta obtendríamos un registro distinto.

Todo dependerá, claro está, del número de registros que tengamos en la tabla en cuestión, en este caso en la de comentarios, ya que si son pocos, es posible que en diferentes ejecuciones se repitan los mismos registros o comentarios.

Únete al canal de Telegram

Déjanos un comentario o entra al  Foro
Share on Facebook Tweet about this on Twitter Share on Google+ Pin on Pinterest Share on Reddit Share on VK Share on StumbleUpon Share on Tumblr Share on LinkedIn Email this to someone Print this page
Etiquetas: , ,