2011-10-13 23 views
13

Encontré esta solución para seleccionar una fila aleatoria de una tabla en Oracle. En realidad, ordena las filas de forma aleatoria, pero solo puedes buscar la primera fila para obtener un resultado aleatorio.Fila aleatoria de Oracle de la tabla

SELECT * 
FROM table 
ORDER BY dbms_random.value; 

Simplemente no entiendo cómo funciona. Después de ORDER BY debe ser una columna utilizada para la clasificación. Veo que "dbms_random.value" devuelve un valor inferior a cero. Este comportamiento se puede explicar o es así?

Gracias

Respuesta

23

también se puede pensar en ello como esto:

SELECT col1, col2, dbms_random.value 
FROM table 
ORDER BY 3 

En este ejemplo, el número 3 = la tercera columna

+0

solución Genious –

7

Al ordenar por dbms_random.value, Oracle pedidos por la expresión, no para un column.For cada registro de Oracle calculan un número al azar, y luego ordenado por este número.

De manera similar, es la siguiente:

select * from emp order by upper(ename); 

Usted tiene una orden por la base de una función.

Cuestiones relacionadas