Catatan Kecil Oracle “rownum” #2

Limit query dengan menggunakan rownum memang sukses untuk membatasi berapa banyak record yang ingin dikembalikan, tapi hari ini aku perlu limit untuk membatasi result setelah record XX dan sampai record XX.

Aku kira dengan menambahkan batasan bawah rownum yang ingin dikembalikan menjadi:

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 5 <= rownum AND rownum <= 10;

bisa digunakan, akan tetapi hal itu tidak sesuai dengan yang aku inginkan. Query tersebut gagal. Tidak ada record yang dikembalikan.

Quick workaround adalah dengan mengubahnya menjadi seperti ini:

SELECT c.row2, c.row1, c.k_agama, c.content
FROM
(
  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
) c
WHERE 5 <= rownum AND rownum <= 10;

Aku tahu workaround ini payah, tapi aku butuh query ini berjalan secepatnya.

& Komentar

  1. AddY berkata,

    2008-10-15 pada 11:10 am

    pertamax lagi hehe.. yang ini juga gak ada yang komen:D

  2. eshabe berkata,

    2008-10-20 pada 08:28 am

    Hk…. pernah juga
    select * from (
    SELECT rownum row1, a.k_agama, a.content FROM m_agama a ORDER BY a.content where rownum=5

  3. bejitalun berkata,

    2009-02-16 pada 03:02 pm

    aluw…g da yg lebih simple kah??????
    kan kalo di sql tinggal pake limit…….

    hmmm…..

    thanks atas infonya gan.. :D

    • hurie berkata,

      2009-02-17 pada 10:28 am

      Ada, temen aku udah menyarikan query dari framework Zend. Tapi klo gak salah ya tetep kayak gitu itu modelnya klo mau limit. :D

  4. doctor sexy berkata,

    2009-03-25 pada 10:04 am

    makasih bwat infonya,, lagnsung coba ah..

  5. denz berkata,

    2009-03-25 pada 10:06 am

    worth info…
    thanx bro..


Tulis sebuah Komentar