SQL Server – MySQL’deki LIMIT MSSQL’de Nasıl Kullanılır?

MySQL ile aşina olanlar bilirler ki LIMIT deyimi ile belirli aralıktaki kayıtlar seçilebilir. Böylece, mesela 51. kayıttan itibaren 5 kayıt listeleme gibi işlemler basit bir şekilde gerçekleştirilebilir. Ancak bu işlemi MSSQL üzerinde yapmak, MySQL’de olduğu gibi basit değildir.

MySQL’den bu kadar bahsettikten sonra MySQL üzerinde LIMIT kullanımı şu komut ile gerçekleştirilebilir:

Yukarıdaki komut sayesinde 51. kayıttan başlayarak 5 kayıt listelenecektir. Eğer MSSQL’de CURSOR kullanmak zor geliyorsa aşağıdaki yöntemlerle aynı sonuca ulaşılabilir:

ROW_NUMBER() Fonksiyonu ile Gösterilecek Kayıtları Limitleme

ROW_NUMBER() fonksiyonu, OVER (ORDER BY alan)  ifadesi ile birlikte kullanılır ve gösterilen her bir kayda sırayla bir numara verir.  Bu yöntemi yapmak için, öncelikle sıra numarası verilmiş SELECT sorgusu kullanılır.

Elde edilen sonuçlardan yola çıkılarak bir sanal tablo ifade edilirse;

Ardından, sanki sanal_tablo isminde bir tablo varmış gibi, sıra numarası 51 ve 55 arasında olan kayıtlar BETWEEN ifadesi ile belirtilerek listelenir. (51. kayıttan başlayarak 5 adet kayıt alınacağından dolayı gösterilecek ilk kayıt 51, son kayıt 55 olacaktır. SQL sorgusu, bu nüans göze alınarak yazılmalıdır.)

EXCEPT İfadesi ile İki Tablonun Farkını Alarak Limitleme

Kümelerde fark işleminin aynısının SQL Server üzerinde uygulanmasıyla 51 ve 55. kayıtlar arasındaki kayıtların listelenmesi mümkündür. Bunun için öncelikle ilk 55 kayıt listelenir, bu kayıtlardan ilk 50 kayıt EXCEPT ifadesi kullanılarak çıkarılır. Geriye 51-55 aralığındaki kayıtlar kalacaktır.

OFFSET … FETCH NEXT … ROWS ONLY İfadesi ile Limitleme

MySQL’deki LIMIT kullanımına en benzer örneği en sona sakladım. Burada ORDER BY ifadesi zorunlu bir ifadedir ve sonuçların hangi alana göre sıralanacağı mutlaka belirtilmelidir. OFFSET deyimi ile kaç kaydın atlanacağı, FETCH NEXT … ROWS ONLY ile de ardından gelen kaç adet kaydın listeleneceği ifade edilmektedir. Bu yönüyle de MySQL-LIMIT deyiminden ayrılmaktadır. Dolayısıyla 51. kayıttan başlayarak 5 adet kaydı listelemek için aşağıdaki sorgu kullanılır:

Dikkat edilirse 51. kayıttan başlanması gerektiği halde OFFSET 50 ROWS  şeklinde bir kullanım gerçekleştirdik. OFFSET ifadesi, görmezden gelinecek kayıt sayısını ifade ettiğinden  ulaşılmak istenen kayıttan önceki kayıt sayısını nitelemek için 50 yazılmıştır.

About Hürkal HÜSEM

2010 yılından bu yana Bilişim Teknolojileri Öğretmeni olarak meslek liselerinde görev yapmaktayım.

View all posts by Hürkal HÜSEM →

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.