Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como limitar resultados no Oracle

Problema:


Você deseja limitar o número de linhas resultantes de uma consulta no Oracle.

Exemplo:


No exam tabela, há nomes dos alunos com os resultados do exame.
nome exam_result
Janet Morgen 9
Taya Bain 11
Anne Johnson 11
Josh Kaur 10
Ellen Thornton 8

Você deseja obter as três linhas com os melhores resultados do exame.

Solução 1:

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

O resultado da consulta fica assim:
nome exam_result
Taya Bain 11
Anne Johnson 11
Josh Kaur 10

Discussão:


No FROM cláusula, use uma subconsulta que classifica as linhas pelo exam_result coluna em ordem decrescente.
SELECT *
FROM exam
ORDER BY exam_result DESC

Na consulta principal, escreva uma condição para que o número de linhas seja menor ou igual a 3 . Use ROWNUM (o número da linha) para fazer isso. Para garantir que você veja apenas as três primeiras linhas, você precisa de uma condição de que o número da linha seja menor ou igual a 3 .
WHERE ROWNUM <= 3

Você precisa de uma subconsulta apenas para classificar as linhas. Se você quiser três linhas aleatoriamente em vez das três melhores, simplesmente escreva o nome da tabela em vez da subconsulta.
SELECT *
FROM exam
WHERE ROWNUM <= 3;

Atenção! Isso não funcionará quando você estiver procurando por linhas com um número maior que algum valor (por exemplo, ROWNUM > 2 não retornará nenhuma linha.)