Sortierung und Paginierung von MySQL-Abfragen

Sortierung und Paginierung von MySQL-Abfragen

Überblick

Da wir die Daten normalerweise nicht direkt in der Datenbank präsentieren möchten, haben wir in den letzten beiden Abschnitten gezeigt, wie die Daten gefiltert werden. Neben der Filterung der Daten

Möglicherweise müssen wir die Daten auch sortieren. Wenn wir beispielsweise die teuersten Artikel in der Liste wissen möchten, müssen wir das Betragsfeld möglicherweise in absteigender Reihenfolge sortieren. Wenn wir die Altersverteilung von jung bis alt sehen möchten, müssen wir das Altersfeld in der Benutzertabelle möglicherweise in aufsteigender Reihenfolge sortieren.

Es kann auch erforderlich sein, die Daten einzuschränken. Beispielsweise müssen wir Benutzern, die Zahlungen von 1 bis 10, 11 bis 20 und 21 bis 30 leisten, unterschiedliche Geschenke machen. Zu diesem Zeitpunkt sind Datenbeschränkungen sehr nützlich.

Hinweis: Im folgenden Skript steht [] für „optional“ und das Trennzeichen „|“ zeigt an, dass einer davon ausgewählt werden kann.

Datensortierung nach

Das Syntaxformat ist wie folgt:

1. Die zu sortierenden Felder folgen der Order-By-Anweisung;

2. asc und desc geben die Sortierregeln an, asc: aufsteigende Reihenfolge, desc: absteigende Reihenfolge, die Standardeinstellung ist aufsteigend asc;

3. Sie können mehrere Felder zum Sortieren angeben und mehrere Felder durch Kommas trennen.

4. Bei der Sortierung mehrerer Felder gilt: Je früher das Feld steht, desto höher ist die Priorität. Im Folgenden wird zuerst cname1 sortiert. Wenn cname1 den gleichen Wert hat, beginnt cname2 mit der Sortierung, bis alle Felder sortiert sind.

wähle cname aus tname, sortiert nach cname1 [asc|desc], cname2 [asc|desc]...;

Nach einzelnen Feldern sortieren

Beispielsweise wird der Verkaufsbetrag in absteigender Reihenfolge entsprechend dem Transaktionsbestellbetrag angezeigt:

mysql> wähle * aus t_order;
+---------+---------+---------+-------+
| Bestellnummer | Konto | Menge | Waren |
+---------+---------+---------+-------+
| 8 | Marke | 52,2 | 2 |
| 9 | Henne | 1752.02 | 7 |
| 10 | helyn | 88,5 | 4 |
| 11 | Sol | 1007,9 | 11 |
| 12 | kleines | 12 | 1 |
| 13 | weng | 52,2 | 5 |
| 14 | Ausfall | 99,71 | 9 |
+---------+---------+---------+-------+
7 Reihen im Set

mysql> wähle * aus t_order, sortiere nach Betrag, absteigend;
+---------+---------+---------+-------+
| Bestellnummer | Konto | Menge | Waren |
+---------+---------+---------+-------+
| 9 | Henne | 1752.02 | 7 |
| 11 | Sol | 1007,9 | 11 |
| 14 | Ausfall | 99,71 | 9 |
| 10 | helyn | 88,5 | 4 |
| 8 | Marke | 52,2 | 2 |
| 13 | weng | 52,2 | 5 |
| 12 | kleines | 12 | 1 |
+---------+---------+---------+-------+
7 Reihen im Set

Sortieren mehrerer Felder

Mehrere Felder werden nach Kommas sortiert und die Priorität nimmt von links nach rechts ab. Wie in der folgenden Abbildung gezeigt, werden sie bei gleichem Betrag entsprechend der Anzahl der gekauften Artikel von der größten zur kleinsten sortiert:

mysql> Auswahl * aus t_order, Sortierung nach Menge desc, Waren desc;
+---------+---------+---------+-------+
| Bestellnummer | Konto | Menge | Waren |
+---------+---------+---------+-------+
| 9 | Henne | 1752.02 | 7 |
| 11 | Sol | 1007,9 | 11 |
| 14 | Ausfall | 99,71 | 9 |
| 10 | helyn | 88,5 | 4 |
| 13 | weng | 52,2 | 5 |
| 8 | Marke | 52,2 | 2 |
| 12 | kleines | 12 | 1 |
+---------+---------+---------+-------+
7 Reihen im Set

Nach Alias ​​sortieren

Der Zweck der Sortierung nach Alias ​​oder bedingter Abfrage besteht darin, den Code zu vereinfachen und die Verwendung zu erleichtern. Der Alias ​​kann auf Englisch oder Chinesisch sein:

mysql> wähle Konto als ac, Betrag als am, Waren als gd aus t_order, sortiere nach am, gd desc;

+----------+---------+----+
| ac | am | gd |
+----------+---------+----+
| kleines | 12 | 1 |
| weng | 52,2 | 5 |
| Marke | 52,2 | 2 |
| helyn | 88,5 | 4 |
| Ausfall | 99,71 | 9 |
| Sol | 1007,9 | 11 |
| Henne | 1752.02 | 7 |
+----------+---------+----+
7 Reihen im Set

Verwenden von Funktionen bei der Feldsortierung

Im Folgenden wird die abs-Funktion verwendet, sodass bei der absteigenden Sortierung des am-Felds -99,99 über 99,71 steht.

mysql> wähle * aus t_order;
+---------+---------+---------+-------+
| Bestellnummer | Konto | Menge | Waren |
+---------+---------+---------+-------+
| 8 | Marke | 52,2 | 2 |
| 9 | Henne | 1752.02 | 7 |
| 10 | helyn | 88,5 | 4 |
| 11 | Sol | 1007,9 | 11 |
| 12 | kleines | 12 | 1 |
| 13 | weng | 52,2 | 5 |
| 14 | Ausfall | 99,71 | 9 |
| 15 | Marke1 | -99,99 | 5 |
+---------+---------+---------+-------+
8 Reihen im Set

mysql> wähle Konto als ac, Betrag als am, Waren als gd aus t_order, sortiere nach abs(am) desc;

+--------+---------+----+
| ac | am | gd |
+--------+---------+----+
| Henne | 1752.02 | 7 |
| Sol | 1007,9 | 11 |
| Marke1 | -99,99 | 5 |
| Ausfall | 99,71 | 9 |
| helyn | 88,5 | 4 |
| Marke | 52,2 | 2 |
| weng | 52,2 | 5 |
| kleines | 12 | 1 |
+--------+---------+----+
8 Reihen im Set

Wird in Verbindung mit der Where-Bedingung verwendet

„order“ kommt nach der Where-Bedingung und sortiert die Daten basierend auf den gefilterten Daten in „Where“. Nachfolgend sind die Daten mit Kaufbetrag > 80 und Kaufmenge > 5 herausgefiltert und absteigend nach Preis sortiert.

mysql> wähle * aus t_order;
+---------+---------+---------+-------+
| Bestellnummer | Konto | Menge | Waren |
+---------+---------+---------+-------+
| 8 | Marke | 52,2 | 2 |
| 9 | Henne | 1752.02 | 7 |
| 10 | helyn | 88,5 | 4 |
| 11 | Sol | 1007,9 | 11 |
| 12 | kleines | 12 | 1 |
| 13 | weng | 52,2 | 5 |
| 14 | Ausfall | 99,71 | 9 |
| 15 | Marke1 | -99,99 | 5 |
+---------+---------+---------+-------+
8 Reihen im Set

mysql> Auswahl * aus t_order, wobei Betrag>80 und Waren>5 nach Betrag absteigend sortiert sind;
+---------+---------+---------+-------+
| Bestellnummer | Konto | Menge | Waren |
+---------+---------+---------+-------+
| 9 | Henne | 1752.02 | 7 |
| 11 | Sol | 1007,9 | 11 |
| 14 | Ausfall | 99,71 | 9 |
+---------+---------+---------+-------+

Datenlimit

Nachdem wir die Daten herausgefiltert haben, die den Anforderungen entsprechen, müssen wir oft noch einen bestimmten Bereich dieser Daten abrufen. Beispielsweise möchten wir dem 1. bis 10., 11. bis 20. und 21. bis 30. Benutzer, deren Zahlungen 1.000 überschreiten, unterschiedliche Geschenke machen. In diesem Fall müssen wir die Limit-Operation verwenden.

„Limit“ wird verwendet, um die von einer Auswahlabfrage zurückgegebenen Daten zu begrenzen und wird häufig bei der Datenbewertung oder -paginierung verwendet.

Das Syntaxformat ist wie folgt:

Wähle CNAME aus TNAME-Limit [Offset,] Anzahl;

1. Offset gibt den Offset an, der sich auf die Anzahl der zu überspringenden Zeilen bezieht. Er kann weggelassen werden und der Standardwert ist 0, was bedeutet, dass 0 Zeilen übersprungen werden. Beispielsweise entspricht Limit 8 Limit 0,8.

2. Anzahl: Die Anzahl der Datenzeilen, die nach dem Überspringen des Offsets Offset abgerufen werden sollen, also die Anzahl der Zeilen.

3. Die Werte von Offset und Anzahl im Limit können nicht mit Ausdrücken ausgedrückt werden.

Holen Sie sich die ersten n Datensätze

Wie in der folgenden Abbildung gezeigt, sind Grenzwert n und Grenzwert 0,n konsistent:

mysql> wähle * aus t_order;
+---------+---------+---------+-------+
| Bestellnummer | Konto | Menge | Waren |
+---------+---------+---------+-------+
| 8 | Marke | 52,2 | 2 |
| 9 | Henne | 1752.02 | 7 |
| 10 | helyn | 88,5 | 4 |
| 11 | Sol | 1007,9 | 11 |
| 12 | kleines | 12 | 1 |
| 13 | weng | 52,2 | 5 |
| 14 | Ausfall | 99,71 | 9 |
| 15 | Marke1 | -99,99 | 5 |
+---------+---------+---------+-------+
8 Reihen im Set

mysql> wähle * von t_order limit 2
;
+---------+---------+---------+-------+
| Bestellnummer | Konto | Menge | Waren |
+---------+---------+---------+-------+
| 8 | Marke | 52,2 | 2 |
| 9 | Henne | 1752.02 | 7 |
+---------+---------+---------+-------+
2 Reihen im Set

mysql> wähle * von t_order limit 0,2;
+---------+---------+---------+-------+
| Bestellnummer | Konto | Menge | Waren |
+---------+---------+---------+-------+
| 8 | Marke | 52,2 | 2 |
| 9 | Henne | 1752.02 | 7 |
+---------+---------+---------+-------+
2 Reihen im Set

Einen einzelnen Datensatz begrenzen

Hier erhalten wir eine Aufzeichnung der größten und kleinsten Zahlungsbeträge. Sie können zunächst die Sortierbedingung zum Sortieren verwenden und dann den ersten Datensatz einschränken:

 mysql> wähle * aus t_order;
 +---------+---------+---------+-------+
 | Bestellnummer | Konto | Menge | Waren |
 +---------+---------+---------+-------+
 | 8 | Marke | 52,2 | 2 |
 | 9 | Henne | 1752.02 | 7 |
 | 10 | helyn | 88,5 | 4 |
 | 11 | Sol | 1007,9 | 11 |
 | 12 | kleines | 12 | 1 |
 | 13 | weng | 52,2 | 5 |
 | 14 | Ausfall | 99,71 | 9 |
 | 15 | Marke1 | -99,99 | 5 |
 +---------+---------+---------+-------+
 8 Reihen im Set

 mysql> Auswahl * von t_order, wobei Betrag>0, Sortierung nach Betrag, Abstiegslimit 1;
 +---------+---------+---------+-------+
 | Bestellnummer | Konto | Menge | Waren |
 +---------+---------+---------+-------+
 | 9 | Henne | 1752.02 | 7 |
 +---------+---------+---------+-------+
 1 Reihe im Set

 mysql> Auswahl * von t_order, wobei Betrag>0, Sortierung nach Betrag aufsteigend, Limit 1;
 +---------+---------+--------+-------+
 | Bestellnummer | Konto | Menge | Waren |
 +---------+---------+--------+-------+
 | 12 | kleines | 12 | 1 |
 +---------+---------+--------+-------+
 1 Reihe im Set

Oben sind die Details zum Sortieren und Paginieren von MySQL-Abfragen aufgeführt. Weitere Informationen zu MySQL-Abfragen finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Implementierung der MySQL-Abfrageoptimierung für große Seiten für Millionen von Daten
  • So implementieren Sie eine Paging-Abfrage in MySQL
  • So fragen Sie Daten aus mehreren unabhängigen Tabellen und Paging in MySQL ab
  • Techniken zur Optimierung von MySQL-Paging-Abfragen
  • Tutorial zur MySQL-Optimierung: Große Paging-Abfrage
  • So implementieren Sie Paging-Abfragen mit MySQL

<<:  Detaillierte Erläuterung des Konfigurationsprozesses des Docker-Container-Netzwerkports

>>:  el-table in vue realisiert automatischen Deckeneffekt (unterstützt feste)

Artikel empfehlen

So installieren und verwenden Sie Ubuntu Docker

Inhaltsverzeichnis 1. Automatische Installation m...

Detaillierte Schritte zum Erstellen eines NFS-Dateifreigabeservers unter Linux

Linux erstellt NFS-Server Um den Datenaustausch z...

So legen Sie die Anzahl der MySQL-Verbindungen fest (zu viele Verbindungen)

Während der Verwendung von MySQL wurde festgestel...

Detaillierte Erklärung der MySQL Truncate-Verwendung

Inhaltsverzeichnis MySQL Truncate-Verwendung 1. T...

js implementiert benutzerdefinierte Dropdown-Box

In diesem Artikelbeispiel wird der spezifische JS...

Ausführliches Tutorial zur Installation von MySQL 8.0.19 (Windows 64 Bit)

Inhaltsverzeichnis MySQL initialisieren MySQL-Die...

So verstehen Sie das Ref-Attribut von React genau

Inhaltsverzeichnis Überblick 1. Erstellen eines R...

Detaillierte Erläuterung der MySQL Master-Slave-Datenbankkonstruktionsmethode

Dieser Artikel beschreibt, wie man eine MySQL Mas...

React implementiert den Beispielcode der Radiokomponente

Ziel dieses Artikels ist es, die Grundfunktionen ...