SORU
22 Ocak 2009, PERŞEMBE


Nasıl sipariş sonra Oracle bir sorgu tarafından döndürülen satır sayısını sınırlamak mı?

Bir şekilde Oracle sorgu ** 5 MySQL maddesi var gibi davranması için mi var?

MySQL, bunu yapabilirim:

select * 
from sometable
order by name
limit 20,10

30 satır 21 (20, sonraki 10 ver ilk atla). Satırlar gerçekten 20 adına göre alfabetik olarak başlar order by, sonra seçilir.

Oracle, insanlar söz tek şey rownum pseudo-sütun, ama değerlendirilirönceBu demektir ki order by,:

select * 
from sometable
where rownum <= 10
order by name

on satır rasgele bir dizi genellikle istediğim bir şey değil ki adı, sipariş dönecektir. Aynı zamanda bir uzaklık belirtmek için izin vermez.

CEVAP
22 Ocak 2009, PERŞEMBE


Böyle bir alt sorgu kullanabilirsiniz

select *
from  
( select * 
  from emp 
  order by sal desc ) 
where ROWNUM <= 5;

Ayrıca Oracle/konu On ROWNUM and limiting results bakın daha fazla bilgi için AskTom.

Güncelleme: Her ikisi de düşük sonucu sınır ve üst sınır işleri biraz daha şişmiş

select * from 
( select a.*, ROWNUM rnum from 
  ( <your_query_goes_here, with order by> ) a 
  where ROWNUM <= :MAX_ROW_TO_FETCH )
where rnum  >= :MIN_ROW_TO_FETCH;

(AskTom-makalede belirtilen kopyalanmış)

Güncelleme 2: Oracle 12c (12.1) ile başlayan bir sözdizimi satır sınırı veya uzaklıklardan başlatmak için kullanılabilir.

SELECT * 
FROM   sometable
ORDER BY name
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;

Daha fazla örnek için this answer bkz. İpucu için Krumia için teşekkürler.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dan Gately

    Dan Gately

    13 AĞUSTOS 2006
  • listedabive

    listedabive

    30 Ocak 2007
  • RayperEnglishKnight

    RayperEnglis

    24 Kasım 2008