Select * from table where rownum<= 20
sorgusu bize ilk gelen 20 kaydı listeler.Eğer bir kritere göre sıralama yapıp satır sayısını sınırlandırmak istersek yani order by kullanırsak;
Select * from personel where rownum<=20 order by personeladi desc
dediğimizde bize dönen sonuç hatalı olacaktır.Yani sorgu bize 20 satırlık bir sonuç dönderecektir ancak bu 20 satırlık sonuc bizim istediğimiz gibi personel adına göre Z den A ya sıralanmış ilk 20 kaydı getirmeyecektir.
Burada bize dönen sonuç "select * from personel where rownum<=20" den dönen sonucun personel adına göre sıralanması olacaktır ki bu da bizim istediğimiz sonuç değildir.Burada sorgu ile ilk olarak rownum işlemi ardından order by işlemi yapılmaktadır.Biz ise önce order by ardından rownum yapmasını istiyoruz.
"select * from personel order by personel_adi (where) rownum<=20" sorgusunu çalıştırmak istediğimizde uygun olmayan sql hatası verecektir.Bunu yapabilmek için içiçe sorgu yazmamız gerekmektedir.
Select * from (select * from personel order by personel_adi desc) rownum<=20bize istediğimiz sonucu dönderecektir.
Hiç yorum yok:
Yorum Gönder