4.1 GRENZE

Wenn Sie erwarten, dass Ihre SQL-Abfrage zu viele Daten zurückgibt, können Sie die maximale Anzahl im Voraus begrenzen. Schließlich können Tabellen Tausende oder sogar Millionen Zeilen enthalten.

SQL macht es sehr einfach, die Anzahl der Zeilen im Ergebnis einer Abfrage mithilfe von zu begrenzen LIMIT. Dieses Schlüsselwort wird ganz am Ende der SQL-Abfrage verwendet und sieht folgendermaßen aus:

LIMIT quantity

Schreiben wir eine Abfrage für die Produkttabelle, die eine Liste der Produkte unseres Shops enthält. Da wir jedoch ein sehr erfolgreiches Geschäft haben und viele Produkte verkaufen, möchten wir nur die ersten 10 Zeilen der Antwort erhalten. So würde diese Anfrage aussehen:

SELECT * FROM product
LIMIT 10

Und wir erhalten das folgende Abfrageergebnis:

Ausweis Name Marke Preis zählen
1 Tisch IKEA 20.00 15
2 Der Stuhl IKEA 5.00 45
3 Sofa IKEA 80,00 10
4 Bett IKEA 75,00 10
5 Kleiderschrank Bosch 125,00 15
6 Regal Regal 25.00 114
7 Fernseher LG 350,00 4
8 Lampe LG 15.00 100
9 Kommode IKEA 99,00 10
10 Platte Bosch 199,00 10

Jetzt werden wir nur die ersten 5 Zeilen anfordern. So würde diese Anfrage aussehen:

SELECT * FROM product
LIMIT 5

Wir erhalten das folgende Abfrageergebnis:

Ausweis Name Marke Preis zählen
1 Tisch IKEA 20.00 15
2 Der Stuhl IKEA 5.00 45
3 Sofa IKEA 80,00 10
4 Bett IKEA 75,00 10
5 Kleiderschrank Bosch 125,00 15

4.2 OFFSET

Beim letzten Mal haben wir gelernt, wie man die Anzahl der Zeilen in der Serverantwort begrenzt. Und jetzt können wir statt tausender Zeilen aus der Produkttabelle die ersten 10 Zeilen abrufen und sie dem Benutzer anzeigen. Es ist ausgezeichnet. Aber wie zeigen wir die zweiten 10 Zeilen an? Und der dritte?

LIMIT 20Wenn wir , or schreiben LIMIT 30, gibt der Server dann nicht 20 bzw. 30 Zeilen zurück?

Für diesen Fall gibt es in SQL ein spezielles Schlüsselwort, OFFSETmit dem Sie den Server auffordern können, N Zeilen in seiner Antwort zu überspringen. Dieses Schlüsselwort wird ganz am Ende der SQL-Abfrage (nach LIMIT) verwendet und sieht folgendermaßen aus:

OFFSET quantity

Schreiben wir eine Abfrage für die Produkttabelle und versuchen, die Datensätze 11 bis 15 abzurufen. Mit anderen Worten: Wir bitten den Server, 5 Zeilen an uns zurückzugeben, überspringen aber zuerst die ersten 10 Zeilen der Antwort. So würde diese Anfrage aussehen:

SELECT * FROM product
LIMIT 5
OFFSET 10

Wir erhalten das folgende Abfrageergebnis:

Ausweis Name Marke Preis zählen
elf Sessel Bosch 44,00 8
12 Blumentopf Smartflower 99,00 9
13 Stand IKEA 100,00 10

Der Server hat nur 3 Zeilen zurückgegeben, was bedeutet, dass unsere Tabelle insgesamt 13 Zeilen enthielt. Der Server hat die ersten 10 übersprungen und die nächsten 5 zurückgegeben.

4.3 UNTERSCHIEDLICH AUSWÄHLEN

Ein weiteres nützliches Schlüsselwort ist DISTINCT. Es wird verwendet, wenn die Tabelle doppelte Datensätze enthält und wir die Duplikate entfernen möchten.

Woher kommen Duplikate in unserer Tabelle? Die Tabelle enthält möglicherweise keine Duplikate, aber aufgrund der Abfrage ist dies einfach. Schreiben wir eine Abfrage, die die Marken aller von uns verkauften Produkte zurückgibt. So würde diese Anfrage aussehen:

SELECT brand FROM product

Wir erhalten das folgende Abfrageergebnis:

Marke
IKEA
IKEA
IKEA
IKEA
Bosch
Bosch
LG
LG
IKEA
Bosch
Bosch
Smartflower
IKEA

Es ist leicht zu erkennen, dass diese Tabelle doppelte Zeilen enthält. Damit soll sichergestellt werden, dass es keine Duplikate gibt und Sie das Schlüsselwort verwenden müssen DISTINCT. So sieht die korrigierte Anfrage aus:

SELECT DISTINCT brand
FROM product

Wir erhalten das folgende Abfrageergebnis:

Marke
IKEA
Bosch
LG
Smartflower

So viel besser. Oder? ;)

4.4 BESTELLEN NACH

Und schließlich kamen wir zum Sortieren . Um die Ergebnisse einer Abfrage zu sortieren, müssen Sie das Schlüsselwort verwenden ORDER BY. Technisch gesehen sind das zwei Wörter, aber das Wesentliche ist nicht wichtig. Zwei Wörter, ein Operator.

Es muss nach dem Schlüsselwort geschrieben werden WHERE, aber vor LIMITund OFFSET. ORDER BYWenn Sie danach schreiben LIMIT, gibt der SQL-Server einfach einen Fehler zurück.

Im Allgemeinen sieht dieser Operator so aus:

ORDER BY column order

Dabei ist Spalte der Name der Spalte im Tabellen-/Sortierergebnis. Und die Reihenfolge ist die Sortierreihenfolge.

Es gibt drei Arten der Sortierreihenfolge:

  • ASC(von Aufsteigend) - aufsteigend;
  • DESC(von absteigend) - absteigend;
  • Keine Angabe – wird verwendetASC

Schreiben wir eine Abfrage, die eine Liste von Produkten zurückgibt, sortiert nach Preis in aufsteigender Reihenfolge. So würde diese Anfrage aussehen:

SELECT * FROM product
ORDER BY price ASC
LIMIT 10

Wir erhalten das folgende Abfrageergebnis:

Ausweis Name Marke Preis zählen
2 Der Stuhl IKEA 5.00 45
8 Lampe LG 15.00 100
1 Tisch IKEA 20.00 15
6 Regal Bosch 25.00 114
elf Sessel Bosch 44,00 8
4 Bett IKEA 75,00 10
3 Sofa IKEA 80,00 10
12 Blumentopf Smartflower 99,00 9
9 Kommode IKEA 99,00 10
13 Stand IKEA 100,00 10

Das gleiche Ergebnis erhalten wir, wenn wir die Sortierreihenfolge nicht angeben – wir überspringen das Wort ASC.

4.5 ORDER BY über mehrere Spalten hinweg

Mit dem Operator ORDER BYkönnen Sie das Ergebnis nach mehreren Spalten sortieren. Dies kann sehr nützlich sein, wenn die erste Spalte viele doppelte Elemente enthält. Die allgemeine Form dieses Operators ist wie folgt:

ORDER BY column 1 order 1, column 2 order 2, column 3 order 3

Mit anderen Worten: Wenn Sie nach der Sortierung nach der ersten Spalte mehrere identische Werte in der Nähe haben, werden diese nach der zweiten Spalte sortiert und so weiter.

Schreiben wir eine Abfrage, die unsere Produkte nach Marke und Produkte derselben Marke in absteigender Reihenfolge ihrer Nummer sortiert. So würde diese Anfrage aussehen:

SELECT * FROM product
ORDER BY brand ASC, count
DESC

Wir erhalten das folgende Abfrageergebnis:

Ausweis Name Marke Preis zählen
6 Regal Bosch 25.00 114
5 Kleiderschrank Bosch 125,00 15
10 Platte Bosch 199,00 10
elf Sessel Bosch 44,00 8
2 Der Stuhl IKEA 5.00 45
1 Tisch IKEA 20.00 15
9 Kommode IKEA 99,00 10
13 Stand IKEA 100,00 10
4 Bett IKEA 75,00 10
3 Sofa IKEA 80,00 10
8 Lampe LG 15.00 100
7 Fernseher LG 350,00 4
12 Blumentopf Smartflower 99,00 9

Schauen Sie sich die Tabelle genau an – ihre Zeilen sind nach Markennamen sortiert (alphabetische Reihenfolge), und Zeilen mit demselben Markennamen sind in absteigender Reihenfolge nach Produktnummer sortiert (letzte Spalte).