SQL: seleccionar un registro aleatorio

Nunca había necesitado hacer algo así pero hoy, por razones del destino necesitaba seleccionar de la base de datos un registro de manera totalmente aleatoria, si alguna vez necesitas hacer lo mismo, puedes hacer uso la siguiente sintaxis:

SELECT * FROM Tabla ORDER BY RAND() LIMIT 1

Lo de limit 1 implica que sólo nos devuelva un registro, pero no es obligatorio, lo que realmente implica el orden aleatorio es la clausula ORDER BY RAND()

Si también queremos que los registros aleatorios no sean repetidos, bien podemos quitar el limit 1 y saldrán todos de manera aleatoria (sin ningún orden aparente) o bien podemos ir poniendo los que han salido en otra tabla y usar el comando NOT IN

SELECT * FROM Tabla1 ORDER BY RAND() LIMIT 1 WHERE Campo1 NOT IN (SELECT campo2 FROM Tabla2)

En vez de una segunda tabla también podemos usar un array.

Artículos relacionados



Comentarios en SQL: seleccionar un registro aleatorio

Hay 3 Comentarios en el artículo SQL: seleccionar un registro aleatorio, ¿a qué esperas para dar tu opinión?


  1. Filips dice:

    Justo lo que necesitaba. Explicito y muy bien explicado.

    Muchas gracias

  2. emirodgar dice:

    Me alegro de que te sirviera ;)

  3. Fox_New dice:

    Gracias es lo q necesitaba muxas gracias. xD

Deja un comentario