Wednesday, June 11, 2008

Oracle SQL: select N records




Macam programmer yang lain, aku selalu ada masalah bila nak handle data yang banyak dalam database. Tambah pulak bila nak buat select statement pastu dapat beratus - ratus ribu data. So bila masa nak copy masuk dalam texteditor dah macam - macam masalah pulak yang keluaq. Memory tak cukup la, editor hang la and macam macam lagi. So kan baguih kalau dapat select data - data sikit sikit. Contoh kalau ada 200 ribu data, kita boleh select 100 ribu dulu, pastu save dalam texteditor, pastu buat benda yang sama untuk 100 ribu data yang seterusnya.

Nasib baik semua ni takda masalah dalam SQL. Untuk aku yang more kepada Oracle, ada satu function dalam Oracle SQL yang boleh buat benda ni iaitu 'ROWNUM'. Okay script yang first ni adalah untuk select first 1000 records.
SELECT column_name
FROM table_name
WHERE ROWNUM <= 1000;

Tapi masalah jugak kan? Bila nak dapatkan data yang 1000 seterusnya takkan kita nak buat <= 2000, so data 1000 yang awal pun ada jugak. Oleh tu kita kena pulak guna script yang bawah ni. Script kat bawah ni akan select data yang ke 1000 sampai 2000.
SELECT *
FROM (SELECT ROWNUM rnum, a.*
FROM (SELECT *
FROM table_name) a
WHERE ROWNUM <= 2000) WHERE rnum >= 1000;

Tu saja kot untuk post ni, aku saja je tulis supaya aku pun tak lupa bila sampai time nak guna nanti.

No comments: