ROWNUM
er ikke tildelt, før du forespørger, så du vil ikke være i stand til at bruge det i en WHERE
sådan klausul.
Du kan gøre følgende:
SELECT COUNT(*)
FROM
(
select v1, v2, rownum rn
from Foo
) f
WHERE mod(rn,2) = 0;
ROWNUM
er rækkens position i resultatsættet, og den evalueres efter at posterne er valgt.
Disse typer forespørgsler vil aldrig fungere:
WHERE ROWNUM > x
WHERE ROWNUM BETWEEN x AND y
Men dette vil virke
WHERE ROWNUM < x
Da du ønsker at evaluere rownum
med mod
funktion vil det ikke fungere, fordi rownum
er ikke tilgængelig på det tidspunkt. Det er derfor, du skal placere den i en underforespørgsel for at bruge mod
fungere.