So verwenden Sie MySQL „group by“ und „order by“ gemeinsam

So verwenden Sie MySQL „group by“ und „order by“ gemeinsam

Angenommen, es gibt eine Tabelle: Belohnung (Belohnungstabelle). Die Tabellenstruktur ist wie folgt:

Tabelle erstellen test.reward (
 id int(11) NICHT NULL AUTO_INCREMENT,
 uid int(11) NOT NULL KOMMENTAR 'Benutzer-UID',
 Geld Dezimalzahl (10, 2) NICHT NULL KOMMENTAR 'Belohnungsbetrag',
 Datenzeit Datumszeit NICHT NULL KOMMENTAR 'Zeit',
 PRIMÄRSCHLÜSSEL (id)
)
Motor = INNODB
AUTO_INCREMENT = 1
Zeichensatz utf8
COLLATE utf8_general_ci
COMMENT = 'Belohnungstabelle';

Die Daten in der Tabelle sind wie folgt:

Nun müssen wir die höchste Belohnung abfragen, die jede Person erhalten hat, und sie vom Größten zum Kleinsten sortieren:

Wenn Sie direkt abfragen:

SELECT id, uid, money, datatime FROM reward GROUP BY uid ORDER BY money DESC;

Es wurden folgende Ergebnisse erzielt:

Wir haben nicht die gewünschten Ergebnisse erhalten. Dies liegt daran, dass bei der gemeinsamen Verwendung von „group by“ und „order by“ zuerst „group by“ verwendet wird und das erste Datenelement nach der Gruppierung herausgenommen wird. Daher basiert die nachfolgende „order by“-Sortierung auf dem ersten herausgenommenen Datenelement, aber das erste Datenelement ist nicht unbedingt das größte Datenelement in der Gruppe.

Methode 1:

In diesem Fall können wir zuerst sortieren, dann gruppieren und eine Unterabfrage verwenden.

WÄHLEN
 loswerden,
 r.flüssigkeit,
 r.Geld,
 r.Datenzeit
VON (AUSWÄHLEN
  Ausweis,
  Flüssigkeit,
  Geld,
  Datenzeit
 VON Belohnung
 ORDER BY Geld DESC) r
GRUPPE NACH r.uid
BESTELLEN NACH r.money DESC;

Methode 2:

Wenn Sie nicht den gesamten Datensatz benötigen, können Sie max() min() verwenden.

SELECT id, uid, money, datatime, MAX(money) FROM reward GROUP BY uid ORDER BY MAX(money) DESC;

Das Ergebnis ist:

Möglicherweise haben Sie festgestellt, dass die Felder money und max(money) der mit max() abgerufenen Datensätze inkonsistent sind. Dies liegt daran, dass hier nur der Maximalwert der UID abgerufen wird, nicht jedoch der gesamte Datensatz, der dem Maximalwert entspricht.

Wenn Sie den gesamten Datensatz abrufen müssen, können Sie diese Methode nicht verwenden und können eine Unterabfrage verwenden.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung der Group-By-Anweisung in der MySQL-Datenbankgruppenabfrage
  • Detaillierte Erklärung von Group By und Having in MySQL
  • MySQL effiziente Abfrage Left Join und Gruppieren nach (plus Index)
  • Detaillierte Erklärung der MySQL-Gruppierung durch Optimierung
  • So optimieren Sie MySQL-Gruppen nach Anweisungen
  • MySQL-Gruppe durch Gruppieren mehrerer Felder
  • Implementieren Sie Group By basierend auf MySQL, um die neuesten Daten jeder Gruppe zu erhalten
  • Eine kurze Erläuterung zu „Group By“ in MySQL

<<:  CentOS7.5-Installationstutorial für MySQL

>>:  Implementierung der Nginx-Domänennamenweiterleitung für den HTTPS-Zugriff

Artikel empfehlen

Analyse der Prinzipien und der Nutzung von Docker-Container-Datenvolumes

Was ist ein Containerdatenvolumen? Wenn sich die ...

Implementierung des Wasserfall-Layouts im Uni-App-Projekt

GitHub-Adresse, Sie können es mit einem Stern mar...

Ubuntu 16.04 64-Bit in drei Schritten mit 32-Bit-Programmen kompatibel

Schritt 1: Bestätigen Sie die Architektur Ihres S...

So verwenden Sie den Vue-Video-Player für eine Live-Übertragung

Inhaltsverzeichnis 1. Installieren Sie den Vue-Vi...

Docker stellt über einen Port eine Verbindung zu einem Container her

Docker-Container-Verbindung 1. Netzwerk-Port-Mapp...

So erzielen Sie mit Vue3 beispielsweise einen Lupeneffekt

Inhaltsverzeichnis Vorwort 1. Die Bedeutung der K...

Zusammenfassung zur Verwendung der Reduce()-Methode in JS

Inhaltsverzeichnis 1. Grammatik 2. Beispiele 3. A...

So fügen Sie Anführungszeichen in HTML-Titel ein

<a href="https://www.jb51.net/" titl...

Flussdiagramm für den Webserverzugriff auf HTTP und HTTP-Zusammenarbeit

Ein Webserver kann mehrere Websites mit unabhängi...

Vue verwendet OSS zum Hochladen von Bildern oder Anhängen

Verwenden Sie OSS, um Bilder oder Anhänge in ein ...