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

Oracle rownum adfærd med mod funktion

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.



  1. Kom godt i gang med SQL Server 2017 på Linux i Azure-portalen

  2. Hvordan EXTRACT() virker i MariaDB

  3. BESTIL EFTER IN-værdilisten

  4. Hvordan styrer vi dynamisk rækkefølge efter et felt i en tabel?