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

nomor baris tidak menampilkan baris apa pun saat menggunakan antar kata kunci

Oracle rownum dimulai dari 1, jadi Anda tidak akan pernah mendapatkan rownum pertama jika Anda mengatakan between 2 and N .

Dibutuhkan satu baris untuk "memulai" urutan pseudocolumn rownum, jadi dengan menghilangkan rownum 1 dalam kriteria Anda, Anda menghilangkan semua rownum (atau setiap baris pada dasarnya memiliki rownum 0 ).

Lihatlah seperti ini. Anda tidak mendapatkan ROWNUM sampai database mengembalikan baris kepada Anda. Baris pertama dari kriteria apa pun akan selalu menjadi ROWNUM 1.

Nah, trik yang bisa kamu gunakan adalah dengan menggunakan subquery. Setiap subquery akan memiliki rownumnya sendiri, dan jika Anda membuat alias ke nama kolom lain, Anda dapat menyimpannya ke dalam kueri luar, dan memperlakukannya sesuka Anda. Jadi jika Anda ingin menerapkan paging dari kumpulan hasil, Anda biasanya akan alias rownum dari hasil dalam sebagai rownum_ ke subquery luar untuk membatasi dengan ANTARA.

select * from 
  (select t.*, rownum as rownum_ from t)
where rownum_ between 2 and 6

Tetapi perhatikan, bahwa kumpulan hasil luar akan memiliki rownum sendiri, jadi Anda dapat melakukan:

select t2.*, rownum from 
  (select a, b, rownum as rownum_ from t) t2
where rownum_ between 2 and 6

Anda akan melihat rownum pada hasil akhir masih dimulai dari 1, tetapi hasil batin Anda akan memiliki rownum_ mulai dari 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. Instalasi Oracle 12c gagal mengakses lokasi sementara

  2. Oracle:bagaimana cara mendapatkan persen dari total dengan kueri?

  3. Kisah Dua Faktor Pengelompokan

  4. Oracle JDBC ojdbc6 Jar sebagai Ketergantungan Maven

  5. ROWDTOCHAR() Fungsi di Oracle