ROWS
Abrufen eines Zeilenabschnitts aus einer geordneten Menge
DSQL, PSQL
SELECT <columns> FROM ... [WHERE ...] [ORDER BY ...] ROWS m [TO n]
Argument | Beschreibung |
---|---|
m, n |
Beliebige Integer-Ausdrücke |
Note
|
ROWS ist keine Standard-Syntax
|
Begrenzt die Anzahl der Zeilen, die von der SELECT
-Anweisung zurückgegeben werden, auf eine angegebene Anzahl oder einen bestimmten Bereich.
Die ROWS
-Klausel erfüllt auch die gleiche Aufgabe wie die FIRST
- und SKIP
-Klauseln, ist jedoch nicht SQL-kompatibel.Im Gegensatz zu FIRST
und SKIP
sowie OFFSET
und FETCH
akzeptieren die ROWS
- und TO
-Klauseln jede Art von Integer-Ausdruck als Argumente ohne Klammern.Natürlich können für verschachtelte Auswertungen innerhalb des Ausdrucks immer noch Klammern benötigt werden, und eine Unterabfrage muss immer in Klammern eingeschlossen werden.
Important
|
|
Der Aufruf von ROWS m
ruft die ersten m Datensätze aus der angegebenen Menge ab.
Merkmale der Verwendung von ROWS m
ohne eine TO
-Klausel:
-
Wenn m größer als die Gesamtzahl der Datensätze im Zwischendatensatz ist, wird der gesamte Satz zurückgegeben
-
Wenn m = 0, wird eine leere Menge zurückgegeben
-
Wenn m < 0, schlägt der Aufruf der SELECT-Anweisung mit einem Fehler fehl
Der Aufruf von ROWS m TO n
ruft die Zeilen aus der Menge ab, beginnend bei Zeile m und endend nach Zeile n — die Menge ist inklusiv.
Merkmale der Verwendung von ROWS m
mit einer TO
-Klausel:
-
Wenn m größer als die Gesamtzahl der Zeilen in der Zwischenmenge ist und n >= m, wird eine leere Menge zurückgegeben
-
Wenn m nicht größer als n und n größer als die Gesamtzahl der Zeilen in der Zwischenmenge ist, wird die Ergebnismenge auf Zeilen beginnend mit m bis zum Ende der Menge begrenzt
-
Wenn m < 1 und n < 1 ist, schlägt der Aufruf der
SELECT
-Anweisung mit einem Fehler fehl -
Wenn n = m - 1, wird eine leere Menge zurückgegeben
-
Wenn n < m - 1, schlägt der Aufruf der SELECT-Anweisung mit einem Fehler fehl
Verwenden einer TO
-Klausel ohne eine ROWS
-Klausel:
Während ROWS
die FIRST
- und SKIP
-Syntax ersetzt, gibt es eine Situation, in der die ROWS
-Syntax nicht das gleiche Verhalten bietet: Die Angabe von SKIP n
allein gibt den gesamten Zwischensatz zurück, ohne das erste n Reihen.Die Syntax von ROWS … TO
benötigt dazu ein wenig Hilfe.
Bei der ROWS
-Syntax benötigen Sie eine ROWS
-Klausel in Verbindung mit der TO
-Klausel und machen das zweite Argument (n) bewusst größer als die Größe des Zwischendatensatzes.Dies wird erreicht, indem ein Ausdruck für n erstellt wird, der eine Unterabfrage verwendet, um die Anzahl der Zeilen im Zwischensatz abzurufen und 1 hinzufügt.