Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak ograniczyć wyniki w Oracle

Problem:

Chcesz ograniczyć liczbę wierszy wynikających z zapytania w Oracle.

Przykład:

Na exam w tabeli znajdują się nazwiska uczniów z wynikami egzaminu.

nazwa exam_result
Janet Morgen 9
Taya Bain 11
Anna Johnson 11
Josh Kaur 10
Ellen Thornton 8

Chcesz uzyskać trzy wiersze z najlepszymi wynikami egzaminu.

Rozwiązanie 1:

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

Wynik zapytania wygląda tak:

nazwa exam_result
Taya Bain 11
Anna Johnson 11
Josh Kaur 10

Dyskusja:

W FROM klauzuli, użyj podzapytania, które sortuje wiersze według exam_result kolumna w kolejności malejącej.

SELECT *
FROM exam
ORDER BY exam_result DESC

W głównym zapytaniu napisz warunek, że liczba wierszy powinna być mniejsza lub równa 3 . Użyj ROWNUM (numer wiersza), aby to zrobić. Aby mieć pewność, że zobaczysz tylko pierwsze trzy wiersze, potrzebujesz warunku, że numer wiersza powinien być mniejszy lub równy 3 .

WHERE ROWNUM <= 3

Potrzebujesz podzapytania tylko do sortowania wierszy. Jeśli chcesz losowo wybrać trzy wiersze zamiast trzech najlepszych, po prostu wpisz nazwę tabeli zamiast podzapytania.

SELECT *
FROM exam
WHERE ROWNUM <= 3;

Uważaj! To nie zadziała, gdy szukasz wierszy z liczbą większą niż pewna wartość (na przykład ROWNUM > 2 nie zwróci żadnych wierszy.)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle:OALL8 jest w niespójnym stanie

  2. Jak usunąć wszystkie tabele użytkowników?

  3. Jak rozwiązać ORA-00900

  4. Błąd ORA 00904:nieprawidłowy identyfikator

  5. Jak wyeksportować wynik zapytania do csv w Oracle SQL Developer?