Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm thế nào để giới hạn kết quả trong Oracle

Vấn đề:

Bạn muốn giới hạn số hàng xuất phát từ một truy vấn trong Oracle.

Ví dụ:

Trong exam bảng, có tên của học sinh với kết quả của kỳ thi.

name exam_result
Janet Morgen 9
Taya Bain 11
Anne Johnson 11
Josh Kaur 10
Ellen Thornton 8

Bạn muốn có được ba hàng với kết quả kiểm tra tốt nhất.

Giải pháp 1:

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

Kết quả của truy vấn trông giống như sau:

name exam_result
Taya Bain 11
Anne Johnson 11
Josh Kaur 10

Thảo luận:

Trong FROM , sử dụng truy vấn con sắp xếp các hàng theo exam_result theo thứ tự giảm dần.

SELECT *
FROM exam
ORDER BY exam_result DESC

Trong truy vấn chính, hãy viết điều kiện sao cho số hàng phải nhỏ hơn hoặc bằng 3 . Sử dụng ROWNUM (số hàng) để làm điều đó. Để đảm bảo rằng bạn sẽ chỉ nhìn thấy ba hàng đầu tiên, bạn cần có điều kiện là số hàng phải nhỏ hơn hoặc bằng 3 .

WHERE ROWNUM <= 3

Bạn cần một truy vấn con chỉ để sắp xếp các hàng. Nếu bạn muốn ba hàng ngẫu nhiên thay vì ba hàng tốt nhất, chỉ cần viết tên bảng thay vì truy vấn con.

SELECT *
FROM exam
WHERE ROWNUM <= 3;

Coi chừng! Điều này sẽ không hoạt động khi bạn đang tìm kiếm các hàng có một số lớn hơn một số giá trị (ví dụ:ROWNUM > 2 sẽ không trả về bất kỳ hàng nào.)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để truy xuất giá trị hiện tại của một chuỗi oracle mà không tăng nó?

  2. CURRENT_TIMESTAMP và SYSDATE khác nhau trong tiên tri

  3. Làm cách nào để tăng hiệu suất cho INSERT hàng loạt vào bảng được liên kết ODBC trong Access?

  4. Định dạng DATE mặc định của Oracle

  5. Từng bước cài đặt R12.2.6 EBS trên Virtual Box