Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да ограничим резултатите в Oracle

Проблем:

Искате да ограничите броя на редовете в резултат на заявка в Oracle.

Пример:

В exam таблица, има имена на студентите с резултатите от изпита.

name резултат_изпит
Джанет Морген 9
Тая Бейн 11
Ан Джонсън 11
Джош Каур 10
Елън Торнтън 8

Искате да получите трите реда с най-добри резултати от изпита.

Решение 1:

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

Резултатът от заявката изглежда така:

name резултат_изпит
Тая Бейн 11
Ан Джонсън 11
Джош Каур 10

Дискусия:

В FROM клауза, използвайте подзаявка, която сортира редовете по exam_result колона в низходящ ред.

SELECT *
FROM exam
ORDER BY exam_result DESC

В основната заявка напишете условие, че броят на редовете трябва да бъде по-малък или равен на 3 . Използвайте ROWNUM (номера на реда), за да го направите. За да сте сигурни, че ще виждате само първите три реда, имате нужда от условие номерът на реда да е по-малък или равен на 3 .

WHERE ROWNUM <= 3

Нуждаете се от подзаявка само за сортиране на редовете. Ако искате три реда произволно вместо най-добрите три, просто напишете името на таблицата вместо подзаявката.

SELECT *
FROM exam
WHERE ROWNUM <= 3;

Внимавай! Това няма да работи, когато търсите редове с число, по-голямо от някаква стойност (например ROWNUM > 2 няма да върне никакви редове.)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ръчно добавяне на нов RAC екземпляр

  2. SEC_CASE_SENSTIVE_LOGON в 12c

  3. Автоматично увеличаване в оракул към вече създадена таблица

  4. Как да актуализирате Oracle Clob с помощта на JDBC

  5. Как да инсталирате SQL * PLUS клиент в linux