Oracle SINIR ve çağrı için OFFSET Alternatifler

2 Cevap php

Ben sayfa için bir web uygulaması ve ihtiyaç geliştiriyorum sonuçları emretti. Ben normalde bu amaç için OFFSET SINIRI / kullanabilirsiniz.

Hangi Oracle sayfa sipariş sonuçlarına en iyi yolu nedir? Ben rownum ve alt sorgular kullanarak bazı örnekler gördüm. Yolu bu mu? Bana Oracle bu SQL tercüme için bir örnek verebilir:

SELECT fieldA,fieldB 
FROM table 
ORDER BY fieldA 
OFFSET 5 LIMIT 14

(Ben buna değer ne için, Oracle 10g kullanıyorum)

Teşekkürler!


Answer: Using the link provided below by karim79, this SQL would look like:

SELECT * FROM (
    SELECT rownum rnum, a.* 
    FROM(
        SELECT fieldA,fieldB 
        FROM table 
        ORDER BY fieldA 
    ) a 
    WHERE rownum <=5+14
)
WHERE rnum >=5

2 Cevap

Sen sonuçları sınırlamak için rownum pseudocolumn kullanmanız gerekecektir. Buraya bakın:

http://www.oracle.com/technology/oramag/oracle/06-sep/o56asktom.html

http://www.oracle.com/technetwork/issue-archive/2006/06-sep/o56asktom-086197.html

Eğer 10g konum olduğundan, analitik fonksiyonları kullanarak ROWNUM yaklaşımı kolaylaştırmak gerekir

SELECT fieldA, 
       fieldB
  FROM (SELECT fieldA,
               fieldB,
               row_number() over (order by fieldA) rnk
          FROM table_name)
 WHERE rnk BETWEEN 5 AND 14;