sql >> Databasteknik >  >> RDS >> Oracle

Oracle/SQL:Varför frågar SELECT * FROM-poster WHERE rownum>=5 AND rownum <=10 - returnerar noll rader

I Oracle tilldelas Rownum-värden efter sökfrågans filtreringsstadium - de är inte rader i tabellen, de är rader i frågeresultatuppsättningen.

Så den första raden som kommer tillbaka kommer alltid att ges radnummer 1, den andra raden som kommer tillbaka radnummer 2 osv.

Rownum-värdet ökas bara efter att det har tilldelats, så vilken fråga som helst som

select * from t where ROWNUM > 1

kommer aldrig returnera eventuella resultat. Den här frågan säger "Jag vill inte se den första raden som returneras till mig, bara de efter det", vilket är en slags paradox så ingenting returneras.

Se Fråga Tom:On ROWNUM och Limiting Results för mer information.



  1. postgreSQL - in vs any

  2. Hur man hittar intervallet mellan två datum i PostgreSQL

  3. SQL Server:Isolationsnivå läcker över poolade anslutningar

  4. Vad är nytt i Access 2016? Är det värt att uppgradera?