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

Perilaku rownum Oracle dengan fungsi mod

ROWNUM tidak ditetapkan sampai Anda melakukan kueri, jadi Anda tidak akan dapat menggunakannya di WHERE klausa seperti itu.

Anda dapat melakukan hal berikut:

SELECT COUNT(*) 
FROM
(
  select v1, v2, rownum rn
  from Foo 
) f
WHERE mod(rn,2) = 0;

ROWNUM adalah posisi baris dalam kumpulan hasil, dan dievaluasi setelah catatan dipilih.

Jenis kueri ini tidak akan pernah berfungsi:

WHERE ROWNUM > x
WHERE ROWNUM BETWEEN x AND y

Tapi ini akan berhasil

WHERE ROWNUM < x

Karena Anda ingin mengevaluasi rownum dengan mod fungsi itu tidak akan berfungsi karena rownum tidak tersedia pada saat itu. Inilah sebabnya, Anda harus menempatkannya di sub-kueri untuk menggunakan mod fungsi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengulangi nilai dalam kolom

  2. Urutan Default yang berbeda antara ORACLE dan PostgreSQL

  3. SQL SELECT untuk menemukan referensi siklik di pohon yang diatur ID-ayah?

  4. Oracle PL/SQL :menghapus karakter spasi dari string

  5. Bagaimana tata bahasa PL/SQL yang disertakan dengan ANTLR4 dapat diuji?