sql >> Database teknologi >  >> RDS >> Oracle

Oracle/SQL:Hvorfor forespørger SELECT * FROM records WHERE rownum>=5 AND rownum <=10 - returnerer nul rækker

I Oracle tildeles Rownum-værdier efter filtreringsstadiet af forespørgslen - de er ikke rækker i tabellen, de er rækker af forespørgselsresultatsættet.

Så den første række, der kommer tilbage, vil altid få rækkenummer 1, den anden række, der kommer tilbage, rækkenr. 2 osv.

Rækkenumsværdien øges kun, efter at den er tildelt, så enhver forespørgsel som

select * from t where ROWNUM > 1

vil aldrig returnere eventuelle resultater. Denne forespørgsel siger "Jeg ønsker ikke at se den første række, der bliver returneret til mig, kun dem efter den", hvilket på en måde er et paradoks, så intet bliver returneret.

Se Spørg Tom:On ROWNUM og Limiting Results for flere detaljer.



  1. Returner en liste over databasemail-profiler i SQL Server (T-SQL)

  2. Indtast disse tabelværdiparametre kraftigt

  3. LOG() Funktion i Oracle

  4. MariaDB MaxScale Load Balancing på Docker:Implementering:Part One