sql >> Database >  >> RDS >> Oracle

Oracle SQL:filteren op ROWNUM geeft geen resultaten wanneer het zou moeten

U kunt rownum niet gebruiken soortgelijk. rownum wordt berekend wanneer de waarden daadwerkelijk uit de query worden geretourneerd - alleen wanneer een rij wordt geretourneerd. Vandaar de uitspraak:

where rownum = 2

zal nooit een waarde retourneren, omdat er een "1" moet staan ​​voor een "2".

Als u Oracle 12+ gebruikt, kunt u de offset . gebruiken clausule met fetch first <n> rows only . In eerdere versies kunt u row_number() over () om een ​​rijnummer als kolom te berekenen en dat te gebruiken in de where .

Eigenlijk gebruikt uw zoekopdracht al een subquery, dus u kunt zoiets doen als:

select *
from (select . . .,
             row_number() over (order by Request_ID, Actual_Start_Date) as rn
      . . .
     ) t
WHERE rn < (1000000 * to_Number(:X) and)
      rn >= (1000000 * (to_Number(:X)-1))


  1. Zijn PostgreSQL-kolomnamen hoofdlettergevoelig?

  2. Hoe bewaar ik statistieken voor mijn web-app?

  3. Wat betekent gehasht subplan in PostgreSQL?

  4. SQL:zoek de langste gemeenschappelijke tekenreeks tussen rijen