Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Cara Membatasi Hasil di Oracle

Masalah:

Anda ingin membatasi jumlah baris yang dihasilkan dari kueri di Oracle.

Contoh:

Dalam exam tabel, ada nama siswa dengan hasil ujian.

nama hasil_ujian
Janet Morgen 9
Taya Bain 11
Anne Johnson 11
Josh Kaur 10
Ellen Thornton 8

Anda ingin mendapatkan tiga baris dengan hasil ujian terbaik.

Solusi 1:

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

Hasil querynya seperti ini:

nama hasil_ujian
Taya Bain 11
Anne Johnson 11
Josh Kaur 10

Diskusi:

Dalam FROM klausa, gunakan subquery yang mengurutkan baris berdasarkan exam_result kolom dalam urutan menurun.

SELECT *
FROM exam
ORDER BY exam_result DESC

Dalam kueri utama, tulis kondisi bahwa jumlah baris harus kurang dari atau sama dengan 3 . Gunakan ROWNUM (nomor baris) untuk melakukannya. Untuk memastikan Anda hanya akan melihat tiga baris pertama, Anda memerlukan ketentuan bahwa nomor baris harus kurang dari atau sama dengan 3 .

WHERE ROWNUM <= 3

Anda memerlukan subquery hanya untuk mengurutkan baris. Jika Anda ingin tiga baris secara acak alih-alih tiga yang terbaik, tulis saja nama tabelnya, bukan subkuerinya.

SELECT *
FROM exam
WHERE ROWNUM <= 3;

Hati-Hati! Ini tidak akan berfungsi saat Anda mencari baris dengan angka yang lebih besar dari beberapa nilai (misalnya, ROWNUM > 2 tidak akan mengembalikan baris apa pun.)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Fungsi NUMTODSINTERVAL() di Oracle

  2. Cara Menampilkan Semua Keistimewaan Database Oracle untuk Pengguna

  3. Pangkas bidang tanggal di mysql seperti Oracle

  4. Tingkatkan Performa Dengan Kumpulkan Massal Di Oracle

  5. Sisipkan Massal ke dalam database Oracle:Mana yang lebih baik:UNTUK loop kursor atau Select sederhana?