Catatan Kecil Oracle “rownum”

-- rownum menunjukkan urutan fisik dari record
-- dalam database
SELECT rownum row1, a.k_agama, a.content FROM m_agama a;

-- jika kita order hasil query maka rownum tidak lagi akan urut
-- karena rownum menunjukkan posisi asli dari record
SELECT rownum row1, a.k_agama, a.content FROM m_agama a ORDER BY a.content;

-- jika query model ini diterapkan limit hasil query (emulasi LIMIT)
-- maka akan dihasilkan hasil yang salah
SELECT rownum row1, a.k_agama, a.content FROM m_agama a WHERE rownum <= 5 ORDER BY a.content;

-- dengan multi select maka bisa didapatkan urutan dari query
-- yang menggunakan order
SELECT rownum row2, b.row1, b.k_agama, b.content
FROM
(
SELECT rownum row1, a.k_agama, a.content FROM m_agama a ORDER BY a.content
) b;

-- dengan menggunakan model query terakhir maka bisa diperoleh record yang
-- dibutuhkan (implementasi query LIMIT seperti di mysql)
SELECT rownum row2, b.row1, b.k_agama, b.content
FROM
(
SELECT rownum row1, a.k_agama, a.content FROM m_agama a ORDER BY a.content
) b
WHERE rownum <= 5;

1 Komentar

  1. AddY berkata,

    2008-10-15 pada 11:12 am

    pertamax pertamax pertamax
    walopun gak tau apaan tuh isinya hehe.. peace..


Tulis sebuah Komentar