Oracle
 sql >> Database >  >> RDS >> Oracle

Come limitare i risultati in Oracle

Problema:

Vuoi limitare il numero di righe risultanti da una query in Oracle.

Esempio:

Nell'exam tabella, ci sono i nomi degli studenti con i risultati dell'esame.

nome risultato_esame
Janet Morgen 9
Taya Bain 11
Anna Johnson 11
Josh Kaur 10
Ellen Thornton 8

Vuoi ottenere le tre righe con i migliori risultati dell'esame.

Soluzione 1:

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

Il risultato della query è simile al seguente:

nome risultato_esame
Taya Bain 11
Anna Johnson 11
Josh Kaur 10

Discussione:

Nel FROM clausola, utilizzare una sottoquery che ordina le righe in base a exam_result colonna in ordine decrescente.

SELECT *
FROM exam
ORDER BY exam_result DESC

Nella query principale, scrivi una condizione che il numero di righe sia minore o uguale a 3 . Usa ROWNUM (il numero di riga) per farlo. Per assicurarti di vedere solo le prime tre righe, è necessaria una condizione che il numero di riga sia minore o uguale a 3 .

WHERE ROWNUM <= 3

Hai bisogno di una sottoquery solo per ordinare le righe. Se desideri tre righe casuali invece delle tre migliori, scrivi semplicemente il nome della tabella invece della sottoquery.

SELECT *
FROM exam
WHERE ROWNUM <= 3;

Attento! Questo non funzionerà quando cerchi righe con un numero maggiore di un valore (ad esempio, ROWNUM > 2 non restituirà alcuna riga.)