Menggunakan User Defined Variable Sebagai Counter Di MySQL

Sedikit tips mengenai penggunaan User-Defined Variable di MySQL. Buat yang belum tau apa itu user-defined variable. Ini adalah variable yang hanya hidup di satu koneksi MySQL. Dalam artian, user yang login dengan koneksi lain, tidak akan bisa melihat variable ini. Begitu juga bila kita sudah logout dari koneksi tersebut, tidak akan bisa melihat variable yang sama, saat login kembali.

Untuk tips kali ini, saya ingin berbagi, cara membuat counter yang langsung di dalam query MySQL. Tujuannya untuk apa? wah, banyak sekali. Misal, perlu menampilkan nomor urut di query. Saya ada case, dimana perlu melakukan select dari suatu table dan diinsertkan ke table lain. Tapi, ada field yang namanya urutan, yang merupakan nomor urut dari 1 sampai berapapun banyaknya data hasil query tersebut. Berikut query yang saya gunakan:

INSERT INTO newtable
SELECT *, (@counter:[email protected]+1) AS counter
FROM sometable INNER JOIN (SELECT @counter :=0) b
WHERE somefield = 'where condition';

Bagaimana? simple kan? selain itu, counter ini juga bisa digunakan untuk menampilkan nomor urut dari suatu data. Jadi, misalkan mau melakukan paging, tinggal ganti saja query SELECT @counter :=0 dengan berapapun data awal yang butuh dimunculkan. Contoh, sekarang halaman 2 dengan 10 data per halaman. Maka query tersebut menjadi SELECT @counter :=10. Asik kan? Oh iya, jangan tanya performa, saya sendiri ndak melakukan benchmark.

Author: Arief Bayu Purwanto

Hello, my name is Arief Bayu Purwanto, a 24 years old father of a beautiful daughter. Interested in online programming, linux, games, and reading. Currently working on kapanlagi.com as junior developer. I live in a relatively quite and cool place called Malang. I'm available for some freelance stuff as well as some consulting job. You can see my portofolio for some previous task I've finished and some other information related to my capability. Btw, I'm plurking here.