Zeilen in PostgreSQL begrenzen
-
Verwenden Sie die
LIMIT
-Klausel, um Zeilen in PostgreSQL zu begrenzen -
Verwenden Sie die Klausel
FETCH FIRST
, um Zeilen in PostgreSQL zu begrenzen
In PostgreSQL können wir die Anweisung SELECT
verwenden, um Zeilen aus einer Tabelle aufzulisten. Wenn wir jedoch nur ausgewählte Zeilen auflisten wollen, müssen wir entsprechend verschiedene Klauseln verwenden.
Eine Klausel, die mit der SELECT
-Anweisung verwendet wird, um ausgewählte Zeilen aus einer Tabelle anzuzeigen, ist die LIMIT
-Klausel. Die Klausel LIMIT
kann die Anzahl der in den resultierenden Daten aufgelisteten Zeilen einschränken.
Dieser Artikel beschreibt das Schlüsselwort LIMIT
und seine Verwendung in PostgreSQL.
Verwenden Sie die LIMIT
-Klausel, um Zeilen in PostgreSQL zu begrenzen
Die Syntax der LIMIT
-Klausel ist unten dargestellt:
LIMIT { count }
Hier bezieht sich das Feld count
auf die Anzahl der Zeilen, die gezählt und angezeigt werden. Das Schlüsselwort ALL
kann anstelle von count
verwendet werden, um alle von der Abfrage zurückgegebenen Zeilen anzuzeigen, was denselben Effekt hat wie kein Limit.
Lassen Sie uns anhand einer Beispieldatenbank mit der folgenden Tabelle verstehen, wie die Klausel LIMIT
verwendet wird:
create table dummy
(
num int not null,
constraint PK primary key (num)
);
Lassen Sie uns nun diese Beispieltabelle mit einigen Werten füllen:
insert into dummy values (150), (120), (330), (240), (150), (60), (270), (110), (400), (350);
Wenn wir eine einfache SELECT * from dummy
-Anweisung verwenden, um die Zeilen dieser Tabelle aufzulisten, erhalten wir das folgende Ergebnis:
Was ist, wenn wir nur die ersten fünf Zeilen anzeigen möchten? Dafür können wir ganz einfach die LIMIT
-Klausel verwenden.
Es ist eine optionale Funktionalität der SELECT
-Anweisung, die auf folgende Weise verwendet werden kann:
SELECT * from dummy
LIMIT 5;
Dadurch werden nur die ersten fünf Zeilen der Tabelle aufgelistet:
Hinweis: Wenn der Wert der in der
LIMIT
-Klausel angegebenen Zeilen größer ist als die in der Tabelle vorhandenen Zeilen, werden alle Tabellenzeilen angezeigt.
Die Verwendung der LIMIT
-Klausel ist jedoch nicht sehr sinnvoll, wenn die Zeilen nicht sortiert sind, was bedeutet, dass ihre Reihenfolge nicht vorhersehbar ist, und die LIMIT
-Abfrage kann unterschiedliche Ergebnisse anzeigen. Dem können wir entgegenwirken, indem wir die LIMIT
-Klausel mit der ORDER BY
-Klausel in der SELECT
-Abfrage verwenden.
Mit dem Befehl ORDER BY
können Sie die Daten basierend auf einem oder mehreren Attributen aus der Tabelle sortieren. Mit diesem Satz von Attributen können Sie auch in aufsteigender oder absteigender Reihenfolge sortieren.
Betrachten wir die Auswirkung der Verwendung der LIMIT
-Klausel mit ORDER BY
auf unsere dummy
-Tabelle. Der Code wird wie folgt sein:
SELECT * from dummy
ORDER BY num
LIMIT 5;
Dies wird uns das folgende Ergebnis liefern:
Wir können sehen, dass die Abfrage die fünf kleinsten Werte von num
zurückgegeben hat, weil die ORDER BY
-Klausel die Daten standardmäßig in aufsteigender Reihenfolge sortiert hat. Daher können wir die Klauseln LIMIT
und ORDER BY
verwenden, um die höchste oder niedrigste angegebene Anzahl von Werten abzurufen.
Was ist, wenn wir die Zeilen ab der ersten nicht anzeigen möchten? Die LIMIT
-Klausel gewährt uns auch hierfür Flexibilität.
Die Syntax sieht dann so aus:
LIMIT { count }
OFFSET { start }
Der Wert anstelle von start
gibt die Anzahl Zeilen an, die übersprungen werden, bevor die angegebene Anzahl Zeilen angezeigt wird. Das bedeutet, dass die start
-Zeilenzahl übersprungen wird und die nächste count
-Zeilenzahl als Ausgabe ausgegeben wird.
Hinweis: Wenn der in der Klausel
OFFSET
angegebene Wert vonstart
grösser ist als die in der Tabelle vorhandenen Zeilen, werden keine Tabellenzeilen angezeigt.
Lassen Sie uns die Verwendung von OFFSET
demonstrieren, indem Sie die folgende Abfrage auf der dummy
-Tabelle ausführen:
SELECT * from dummy
ORDER BY num
LIMIT 5
OFFSET 2;
Dieser Code beginnt in der dritten Zeile, überspringt die ersten beiden wie angegeben und zeigt dann die nächsten fünf wie folgt an:
Hinweis: Wenn der Wert anstelle von
count
aufNULL
gesetzt wird, hat dies den gleichen Effekt wie kein Limit und zeigt alle resultierenden Zeilen an. Wenn der Wert anstelle vonstart
aufNULL
gesetzt wird, hat dies die gleiche Wirkung wieOFFSET 0
und beginnt mit der Anzeige ab der ersten Zeile.
PostgreSQL bietet ein Äquivalent zur LIMIT
-Klausel, mit der wir nur die erforderliche Anzahl von Zeilen aus einer Tabelle ausgeben können. Dies wird weiter unten erläutert.
Verwenden Sie die Klausel FETCH FIRST
, um Zeilen in PostgreSQL zu begrenzen
Eine Alternative zur LIMIT
-Klausel ist die FETCH FIRST
-Klausel, die folgende Syntax hat:
FETCH FIRST { count } ROWS ONLY;
Auch hier wird count
durch die Anzahl der anzuzeigenden Zeilen ersetzt. Sehen wir uns an, wie die Klausel FETCH FIRST
im Code verwendet wird, indem wir dieselbe dummy
-Tabelle verwenden:
SELECT * from dummy
ORDER BY num
FETCH FIRST 5 ROWS ONLY;
Dies hat den gleichen Effekt wie das Schreiben von LIMIT 5
und zeigt die folgenden resultierenden Zeilen an:
Wenn wir jedoch nicht die Zeilen beginnend mit der ersten anzeigen möchten, können wir die OFFSET
-Klausel mit FETCH FIRST
verwenden. Dies wird folgendermaßen geschrieben:
OFFSET { start }
FETCH FIRST { count } ROWS ONLY;
Lassen Sie uns dies in unserer dummy
-Tabelle in Form dieser Abfrage verwenden:
SELECT * from dummy
ORDER BY num
OFFSET 2
FETCH FIRST 5 ROWS ONLY;
Dadurch werden die folgenden Zeilen abgerufen und gedruckt, nachdem die ersten beiden übersprungen wurden:
Dies fasst die verschiedenen Möglichkeiten zusammen, wie die LIMIT
-Klausel in PostgreSQL verwendet wird, um die Anzahl der angezeigten Zeilen zu beschränken, die aus einer SELECT
-Abfrage resultieren. Wir hoffen, dass Sie die Verwendung der Befehle LIMIT
und FETCH FIRST
als Alternativen zueinander gelernt haben.
Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!
GitHub