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

række num viser ingen rækker, når der bruges mellem nøgleord

Oracle rownum starter ved 1, så du får aldrig det første rækkenummer, hvis du siger between 2 and N .

Det kræver en række at "initiere" rækkenumre-pseudokolonnesekvensen, så ved at eliminere rækkenummer 1 i dine kriterier, eliminerer du alle rækkenumre (eller hver række har i det væsentlige rækkenumre 0 ).

Se på det sådan her. Du får ikke et ROWNUM, før databasen returnerer en række til dig. Den første række af ethvert kriterium vil altid være ROWNUM 1.

Nu er det trick, du kan bruge, at bruge en underforespørgsel. Hver underforespørgsel vil have sit eget rækkenummer, og hvis du kalder det til et andet kolonnenavn, kan du bevare det i ydre forespørgsler og behandle det, som du vil. Så hvis du søger at implementere sidesøgning af et resultatsæt, vil du normalt kalde rownum fra indre resultater som rownum_ til en ydre underforespørgsel for at begrænse med BETWEEN.

select * from 
  (select t.*, rownum as rownum_ from t)
where rownum_ between 2 and 6

Men bemærk, at det ydre resultatsæt vil have sit eget rækkenummer, så du kan gøre:

select t2.*, rownum from 
  (select a, b, rownum as rownum_ from t) t2
where rownum_ between 2 and 6

Du vil se rownum på det endelige resultat starter stadig ved 1, men dit indre resultat vil have rownum_ starter kl. 2.



  1. Sådan får du sidste post i hver gruppe i MySQL

  2. Hvordan eksporteres forespørgselsresultat til csv i Oracle SQL Developer?

  3. Sådan installeres phpMyAdmin på administrerede hostingkonti

  4. Gendannelseskrav før sikkerhedskopiering