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

mengambil data menggunakan rownum di Oracle

rownum adalah kolom semu yang menghitung baris dalam hasil yang ditetapkan setelah klausa where diterapkan.

  SELECT table_name
    FROM user_tables
    WHERE rownum > 2;
TABLE_NAME                     
------------------------------

0 rows selected

Namun, kueri ini akan selalu mengembalikan nol baris, berapa pun jumlah baris dalam tabel.

Untuk menjelaskan perilaku ini, kita perlu memahami bagaimana Oracle memproses ROWNUM. Saat menetapkan ROWNUM ke baris, Oracle mulai dari 1 dan hanya menambah nilai saat baris dipilih; yaitu, ketika semua kondisi dalam klausa WHERE terpenuhi. Karena kondisi kami mengharuskan ROWNUM lebih besar dari 2, tidak ada baris yang dipilih dan ROWNUM tidak pernah bertambah melebihi 1.

http://blog.lishman.com/2008/03/rownum.html

tautan stackoverflow lain

Diedit

paragraf ini saya temukan di Oracle situs web yang jauh lebih baik

Pengujian kondisi untuk nilai ROWNUM yang lebih besar dari bilangan bulat positif selalu salah. Misalnya, kueri ini tidak mengembalikan baris:

SELECT * FROM employees
    WHERE ROWNUM > 1;

Baris pertama yang diambil diberi ROWNUM 1 dan membuat kondisi salah. Baris kedua yang akan diambil sekarang menjadi baris pertama dan juga diberi ROWNUM 1 dan membuat kondisi menjadi salah. Semua baris selanjutnya gagal memenuhi kondisi, jadi tidak ada baris yang dikembalikan.

Anda juga dapat menggunakan ROWNUM untuk menetapkan nilai unik ke setiap baris tabel, seperti dalam contoh ini:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. .Net - Membuat recordset Sesuai Permintaan daripada menarik semuanya ke dalam memori sekaligus

  2. ORA-00906:tanda kurung kiri hilang

  3. Perubahan Grup Layanan di R12.2

  4. File spool Oracle ke file .txt. Pilihan untuk judul

  5. Permintaan RODBC tidak mengembalikan data