


Wie wähle ich in MySQL die Zeile mit dem höchsten Wert in jeder Gruppe aus?
Nov 24, 2024 am 08:02 AMMySQL: Steuern, welche Zeile in einer Group BY-Abfrage zurückgegeben wird
In MySQL ist das Abrufen der Zeile mit dem höchsten Wert aus jeder Gruppe eine gemeinsame Aufgabe. Die Verwendung der Standard-GROUP BY-Klausel mit ORDER BY kann jedoch manchmal zu unerwarteten Ergebnissen führen.
Um dies zu erreichen, können wir alternative Ansätze verwenden, die das Standardgruppierungsverhalten überschreiben:
Unterabfrage Methode:
Diese Methode beinhaltet das Erstellen einer Unterabfrage, um die maximale Versions-ID für jedes einzelne Exemplar zu erhalten id:
SELECT * FROM (SELECT id, MAX(version_id) AS version_id FROM table GROUP BY id) t1 INNER JOIN table t2 ON (t2.id = t1.id AND t1.version_id = t2.version_id)
Diese Abfrage verknüpft die Originaltabelle mit einer Unterabfrage, die die maximale version_id für jede ID auswählt. Der Join stellt sicher, dass nur die Zeilen mit der höchsten Versions-ID zurückgegeben werden.
Unterabfrage mit ORDER BY-Trick:
Eine Variante der Unterabfragemethode beinhaltet die Verwendung von ORDER BY im Unterabfrage, um eine bestimmte Reihenfolge sicherzustellen:
SELECT * FROM (SELECT * FROM table ORDER BY version_id DESC) t1 GROUP BY t1.id
Diese Abfrage sortiert die Zeilen effektiv in absteigender Reihenfolge der Versions-ID innerhalb jeder Gruppe Bevor Sie die Gruppierung durchführen, stellen Sie sicher, dass die Zeile mit der höchsten version_id für jede Gruppe beibehalten wird.
Benannte Windows-Funktion:
Fensterfunktionen ermöglichen die Durchführung von Berechnungen innerhalb eines Satz von durch ein Fenster definierten Zeilen, die für diese Aufgabe verwendet werden können:
SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY id ORDER BY version_id DESC) AS rn FROM table ) t WHERE rn = 1
Diese Abfrage berechnet die Zeilennummer für jede eindeutige ID innerhalb der Partition definiert durch ROW_NUMBER. Die WHERE-Klausel filtert Zeilen mit anderen Zeilennummern als 1 heraus und stellt so sicher, dass nur die Zeile mit der höchsten version_id für jede ID zurückgegeben wird.
Das obige ist der detaillierte Inhalt vonWie wähle ich in MySQL die Zeile mit dem höchsten Wert in jeder Gruppe aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Reduzieren Sie die Verwendung des MySQL -Speichers im Docker

Wie verändern Sie eine Tabelle in MySQL mit der Änderungstabelleanweisung?

So lösen Sie das Problem der MySQL können die gemeinsame Bibliothek nicht öffnen

Führen Sie MySQL in Linux aus (mit/ohne Podman -Container mit Phpmyadmin)

Ausführen mehrerer MySQL-Versionen auf macOS: Eine Schritt-für-Schritt-Anleitung

Wie sichere ich mich MySQL gegen gemeinsame Schwachstellen (SQL-Injektion, Brute-Force-Angriffe)?

Wie konfiguriere ich die SSL/TLS -Verschlüsselung für MySQL -Verbindungen?
