Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle Rownum-Verhalten mit mod-Funktion

ROWNUM wird erst zugewiesen, wenn Sie es abfragen, sodass Sie es nicht in einem WHERE verwenden können Klausel so.

Sie können Folgendes tun:

SELECT COUNT(*) 
FROM
(
  select v1, v2, rownum rn
  from Foo 
) f
WHERE mod(rn,2) = 0;

Die ROWNUM ist die Position der Zeile in der Ergebnismenge und wird ausgewertet, nachdem die Datensätze ausgewählt wurden.

Diese Arten von Abfragen werden niemals funktionieren:

WHERE ROWNUM > x
WHERE ROWNUM BETWEEN x AND y

Aber das wird funktionieren

WHERE ROWNUM < x

Da Sie die rownum auswerten möchten mit dem mod Funktion wird es nicht funktionieren, weil die rownum ist zu diesem Zeitpunkt nicht verfügbar. Aus diesem Grund müssten Sie es in einer Unterabfrage platzieren, um den mod zu verwenden Funktion.