sql >> Base de Datos >  >> RDS >> Oracle

Cómo limitar los resultados en Oracle

Problema:

Desea limitar el número de filas resultantes de una consulta en Oracle.

Ejemplo:

En el exam tabla, hay nombres de los estudiantes con los resultados del examen.

nombre resultado_examen
Janet Morgen 9
Taya Bain 11
Anne Johnson 11
Josh Kaur 10
Ellen Thornton 8

Quiere obtener las tres filas con los mejores resultados en el examen.

Solución 1:

SELECT *
FROM (
  SELECT *
  FROM exam
  ORDER BY exam_result DESC
)
WHERE ROWNUM <= 3;

El resultado de la consulta se ve así:

nombre resultado_examen
Taya Bain 11
Anne Johnson 11
Josh Kaur 10

Discusión:

En el FROM cláusula, use una subconsulta que ordene las filas por el exam_result columna en orden descendente.

SELECT *
FROM exam
ORDER BY exam_result DESC

En la consulta principal, escriba una condición para que el número de filas sea menor o igual a 3 . Use ROWNUM (el número de fila) para hacerlo. Para asegurarse de que verá solo las primeras tres filas, necesita una condición de que el número de fila debe ser menor o igual a 3 .

WHERE ROWNUM <= 3

Necesita una subconsulta solo para ordenar las filas. Si desea tres filas al azar en lugar de las tres mejores, simplemente escriba el nombre de la tabla en lugar de la subconsulta.

SELECT *
FROM exam
WHERE ROWNUM <= 3;

¡Cuidado! Esto no funcionará cuando busque filas con un número mayor que algún valor (por ejemplo, ROWNUM > 2 no devolverá ninguna fila).