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

hente data ved hjælp af rownum i oracle

rownum er en pseudokolonne, der tæller rækker i resultatsættet efter where-sætningen er blevet anvendt.

VÆLG tabelnavn FRA bruger_tabeller WHERE rækkenummer> 2;TABEL_NAVN ------------------------------0 rækker valgt

Denne forespørgsel vil dog altid returnere nul rækker, uanset antallet af rækker i tabellen.

For at forklare denne adfærd er vi nødt til at forstå, hvordan Oracle behandler ROWNUM. Når du tildeler ROWNUM til en række, starter Oracle ved 1 og øger kun værdien, når en række er valgt; det vil sige, når alle betingelser i WHERE-klausulen er opfyldt. Da vores betingelse kræver, at ROWNUM er større end 2, vælges ingen rækker, og ROWNUM øges aldrig ud over 1.

http://blog.lishman.com/2008/03/rownum.html

endnu et stackoverflow-link

Redigeret

dette afsnit finder jeg på oracle hjemmeside, som er meget bedre

Betingelser, der testes for ROWNUM-værdier, der er større end et positivt heltal, er altid falske. For eksempel returnerer denne forespørgsel ingen rækker:

VÆLG * FRA medarbejdere WHERE ROWNUM> 1; 

Den første række, der hentes, tildeles et ROWNUM på 1 og gør betingelsen falsk. Den anden række, der skal hentes, er nu den første række og er også tildelt et ROWNUM på 1 og gør betingelsen falsk. Alle rækker opfylder efterfølgende ikke betingelsen, så ingen rækker returneres.

Du kan også bruge ROWNUM til at tildele unikke værdier til hver række i en tabel, som i dette eksempel:



  1. at hente et byte-array fra en LONG RAW fra oracle db

  2. Oracle indsæt tegn i en streng

  3. SqlPlus SP2-0734:Fejl

  4. Fejl ved installation af mysql2 gem via Bundler