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
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.
Nasıl bir zamanlar her satır sorgu tar...
Nasıl MAX ETMENİZ sorgu TARAFINDAN bir...
Sorgu TARAFINDAN bir GRUP ile satır sa...
Nasıl hesapların yapılabilmesi dizi il...
Nasıl bir PostgreSQL '' sorg...