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.
Si desea devolver una fila aleatoria con MY SQL, utilice la siguiente sintaxis:
SELECT column FROM table ORDER BY RAND () LIMIT 1;
SELECT column FROM table ORDER BY RANDOM () LIMIT 1;
SELECT TOP 1 column FROM table ORDER BY NEWID ();
SELECT column FROM (SELECT column FROM table ORDER BY dbms_random.value) WHERE rownum = 1;
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.