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

Sådan begrænser du resultater i Oracle

Problem:

Du vil begrænse antallet af rækker, der kommer fra en forespørgsel i Oracle.

Eksempel:

I exam tabel, er der navne på eleverne med resultaterne af eksamen.

navn eksamen_resultat
Janet Morgen 9
Taya Bain 11
Anne Johnson 11
Josh Kaur 10
Ellen Thornton 8

Du ønsker at få de tre rækker med de bedste eksamensresultater.

Løsning 1:

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

Resultatet af forespørgslen ser således ud:

navn eksamen_resultat
Taya Bain 11
Anne Johnson 11
Josh Kaur 10

Diskussion:

I FROM klausul, brug en underforespørgsel, der sorterer rækkerne efter exam_result kolonne i faldende rækkefølge.

SELECT *
FROM exam
ORDER BY exam_result DESC

I hovedforespørgslen skal du skrive en betingelse om, at antallet af rækker skal være mindre end eller lig med 3 . Brug ROWNUM (rækkenummeret) til at gøre det. For at sikre, at du kun kan se de første tre rækker, skal du have en betingelse om, at rækkenummeret skal være mindre end eller lig med 3 .

WHERE ROWNUM <= 3

Du skal bruge en underforespørgsel bare for at sortere rækkerne. Hvis du gerne vil have tre rækker tilfældigt i stedet for de bedste tre, skal du blot skrive tabelnavnet i stedet for underforespørgslen.

SELECT *
FROM exam
WHERE ROWNUM <= 3;

Pas på! Dette fungerer ikke, når du leder efter rækker med et tal, der er større end en værdi (f.eks. ROWNUM > 2 returnerer ingen rækker.)


  1. MySQL:Sådan får du længden af ​​tekst i en kolonne

  2. Sådan fjerner du kolonneoverskrifterne, når du sender forespørgselsresultater via e-mail i SQL Server (T-SQL)

  3. Meget langsom opstart af Spring Boot-applikation

  4. Den hurtigste måde at kontrollere, om nogle poster i en databasetabel?