LIMIT (MySQL) dengan T-SQL

Soeleman 16 April 2018

LIMIT (MySQL) dengan T-SQL

Membaca query sebuah database kadang mudah dimengerti dan mudah membuat persamaannya dalam database lain. Tapi untuk beberapa syntax yang digunakan akan membuat kita berkata 'Lol'.

Salah satunya yang akan kita lihat pada tulisan ini.

MySQL

Untuk mendapatkan sebagian data dari sebuah resultset kita akan menggunakan LIMIT. Seperti yang terlihat pada query dibawah.

alt text

Table Letters berisi huruf dari A sampai Z. Dalam query diatas kita ingin mengambil dari mulai dari row ke 5 sebanyak 5 row. Masuk akal bukan? Bagaimana kalau mau ambil 10 row? Untuk itu kita perlu tulis LIMIT 5, 10 sebagai pengantinya.

Dalam MySQL, LIMIT punya 2 parameter. Parameter pertama adalah offset dan satu lagi adalah row_count. Jadi kita membacanya adalah dari row 5 sampai sebanyak 10 row, dalam hal ini sampai row ke 15. Karena penulisannya seperti itu, banyak orang membacanya dari row 5 sampai row 10, seakan-akan itu adalah range.

Terlebih lagi parameter offset itu optional. Dalam artian boleh ditulis atau boleh tidak ditulis, ajaib bukan? karena biasaya parameter yang bersifat optional ada dibelakang sebuah fungsi. Kalau tidak ditulis maka ia akan bernilai 1 atau row ke 1.

Ms SQL SERVER

Sekarang kita sudah mengetahui lebih jelas maksud dari LIMIT dalam MySQL. Maka akan mudah bagi kita membuat persamaanya didalam MsSql.

Ada beberapa cara yang kita bisa lakukan.

ROW_NUMBER

Yang paling umum digunakan dalam MsSql dengan ROW_NUMBER. Cara ini memiliki beberapa variasi untuk mengambil sebagian data. Bisa menggunakan BETWEEN atau range dengan kombinasi > dan <= .

alt text

OFFSET

Untuk MySQL 2012 ke atas bisa menggunakan OFFSET. Walaupun OFFSET boleh dibilang mirip LIMIT, tapi ia perlu dikombinasikan dengan FETCH sehingga syntax-nya lebih deskriptif.

alt text

COUNT

Bagi yang masih menggunakan MsSQL 2008 ke bawah. Kita bisa menggunakan COUNT sebagaimana terlihat gambar dibawah.

alt text

Penutup

LIMIT bagi yang tidak terbiasa akan membuat hasil terjemahannya jadi seperti yang diharapkan. Untuk itu membaca manual dan pengertian atas itu akan membantu membuat persamaanya di-database lainnya.

Referensi

Perhatian! Code yang ditampilkan dalam tulisan ini merupakan ilustrasi dari yang ingin dipaparkan dan bukan production ready code. Sudah banyak kejadian karena asal meng-copy-and-paste tanpa mengerti code yang diambil itu ke dalam production. Selain itu perlu ada tambahan code dan test sebelum siap untuk digunakan secara utuh.