//
you're reading...
Programming

Ekuivalensi LIMIT, OFFSET, TOP

KASUS 1:
Saya perlu 10 baris pertama dari query yang sudah diurutkan (ORDER BY).

Q:Bagaimana melakukannya di MySQL?
A:Gunakan LIMIT, seperti ini.

SELECT col1 FROM table1
ORDER BY col1
LIMIT 10

Q:Bagaimana melakukannya di MsSQL?
A:Gunakan TOP, seperti ini.

SELECT TOP 10 col1 FROM table1
ORDER BY col1

Perbedaannya adalah pada keyword LIMIT dan TOP


KASUS 2:
Saya perlu record ke-21 s.d. record ke-30 dari query saya

Q:Bagaimana melakukannya di MySQL?
A:Seperti sebelumnya, gunakan LIMIT. Tapi kali ini temani dia dengan OFFSET😀

SELECT col1 FROM table1
ORDER BY col1
LIMIT 10 OFFSET 20

Q:Nah kalo di MsSQL?
A:That’s the point. Di MsSQL tidak ada fitur yang ekuivalen dengan OFFSET pada MySQL. Kita perlu sedikit kreatif, dengan mengambil 10 baris teratas yg bukan merupakan 10 baris pertama dari query tsb. @_@ Bingung? Sama😀 Begini nih code nya

--ambil 10 baris teratas
SELECT TOP 10 col1 FROM table1  
--yang bukan merupakan
WHERE col1 NOT IN(  
--10 baris pertama dari query tsb.
  SELECT TOP 10 col1 FROM table1 
  ORDER BY col1
)
ORDER BY col1

As you can see, agak ribet buat menerapkan pagination di MsSQL. Tapi yah, begitulah adanya. FYI, di MsSQL 2005 ada fungsi ROW_NUMBER() dan RANK() yang juga bisa digunakan.

Salam,

Diskusi

Belum ada komentar.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: