logo

ORDEN SQL AL AZAR

Si desea que el registro resultante sea ordenado al azar , debes utilizar los siguientes códigos según varias bases de datos.

Aquí hay una pregunta: ¿cuál es la necesidad de recuperar un registro aleatorio o una fila de una base de datos?

A veces es posible que desee mostrar información aleatoria como artículos, enlaces, páginas , etc., a su usuario.

Si desea recuperar filas aleatorias de cualquiera de las bases de datos, debe utilizar algunas consultas modificadas según las bases de datos.

    Seleccione una fila aleatoria con MySQL:

Si desea devolver una fila aleatoria con MY SQL, utilice la siguiente sintaxis:

 SELECT column FROM table ORDER BY RAND () LIMIT 1; 
    Seleccione una fila aleatoria con Postgre SQL:
 SELECT column FROM table ORDER BY RANDOM () LIMIT 1; 
    Seleccione una fila aleatoria con SQL Server:
 SELECT TOP 1 column FROM table ORDER BY NEWID (); 
    Seleccione una fila aleatoria con Oracle:
 SELECT column FROM (SELECT column FROM table ORDER BY dbms_random.value) WHERE rownum = 1; 
    Seleccione una fila aleatoria con IBM DB2:
 SELECT column RAND () as IDX FROM table ORDER BY IDX FETCH FIRST 1 ROWS ONLY; 

Para entender este concepto de manera práctica, veamos algunos ejemplos usando la base de datos MySQL. Considere que tenemos una tabla de elementos creados en la base de datos con los siguientes datos:

Tabla: artículos

IDENTIFICACIÓN Nombre del árticulo Cantidad de objetos Precio del articulo Fecha de compra
1 Jabón 5 200 2021-07-08
2 Pasta dental 2 80 2021-07-10
3 Bolígrafo 10 50 2021-07-12
4 Botella 1 250 2021-07-13
5 Cepillar 3 90 2021-07-15

Supongamos que queremos recuperar cualquier registro aleatorio de la tabla de elementos.

cadena contiene java

Escribiremos la consulta de la siguiente manera:

 mysql> SELECT * FROM items ORDER BY RAND () LIMIT 1; 

Podemos obtener los siguientes resultados:

IDENTIFICACIÓN Nombre del árticulo Cantidad de objetos Precio del articulo Fecha de compra
3 Bolígrafo 10 20 2021-07-12

Ahora intentemos ejecutar la misma consulta una vez más.

 mysql> SELECT * FROM items ORDER BY RAND () LIMIT 1; 

Podemos obtener los siguientes resultados:

IDENTIFICACIÓN Nombre del árticulo Cantidad de objetos Precio del articulo Fecha de compra
5 Cepillar 3 90 2021-07-15

De los resultados anteriores, podemos concluir que obtenemos registros diferentes como salida en ambas ocasiones, aunque ejecutamos la misma consulta dos veces. La función RAND () ha seleccionado registros aleatorios en ambas ocasiones para la misma consulta de una sola tabla. Por lo tanto, incluso si volvemos a ejecutar la misma consulta, obtendremos un resultado diferente cada vez. Existe una rara posibilidad de obtener el mismo registro consecutivamente usando la función RAND ().

Ahora supongamos que desea que todos los registros de la tabla se obtengan aleatoriamente.

Para hacerlo, necesitamos ejecutar la siguiente consulta:

 mysql> SELECT * FROM items ORDER BY RAND (); 

Podemos obtener los siguientes resultados:

IDENTIFICACIÓN Nombre del árticulo Cantidad de objetos Precio del articulo Fecha de compra
4 Botella 1 250 2021-07-13
5 Cepillar 3 90 2021-07-15
1 Jabón 5 200 2021-07-08
2 Pasta dental 2 80 2021-07-10
3 Bolígrafo 10 50 2021-07-12

También existe la posibilidad de obtener diferentes arreglos de registros si ejecutamos la función RAND() nuevamente en la tabla de empleados.