Heim Datenbank MySQL-Tutorial Wie wähle ich in MySQL die Zeile mit dem höchsten Wert in jeder Gruppe aus?

Wie wähle ich in MySQL die Zeile mit dem höchsten Wert in jeder Gruppe aus?

Nov 24, 2024 am 08:02 AM

How to Select the Row with the Highest Value in Each Group in MySQL?

MySQL: 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)
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Reduzieren Sie die Verwendung des MySQL -Speichers im Docker Reduzieren Sie die Verwendung des MySQL -Speichers im Docker Mar 04, 2025 pm 03:52 PM

Reduzieren Sie die Verwendung des MySQL -Speichers im Docker

Wie verändern Sie eine Tabelle in MySQL mit der Änderungstabelleanweisung? Wie verändern Sie eine Tabelle in MySQL mit der Änderungstabelleanweisung? Mar 19, 2025 pm 03:51 PM

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 So lösen Sie das Problem der MySQL können die gemeinsame Bibliothek nicht öffnen Mar 04, 2025 pm 04:01 PM

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

Was ist SQLite? Umfassende Übersicht Was ist SQLite? Umfassende Übersicht Mar 04, 2025 pm 03:55 PM

Was ist SQLite? Umfassende Übersicht

Führen Sie MySQL in Linux aus (mit/ohne Podman -Container mit Phpmyadmin) Führen Sie MySQL in Linux aus (mit/ohne Podman -Container mit Phpmyadmin) Mar 04, 2025 pm 03:54 PM

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 Ausführen mehrerer MySQL-Versionen auf macOS: Eine Schritt-für-Schritt-Anleitung Mar 04, 2025 pm 03:49 PM

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 sichere ich mich MySQL gegen gemeinsame Schwachstellen (SQL-Injektion, Brute-Force-Angriffe)? Mar 18, 2025 pm 12:00 PM

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? Wie konfiguriere ich die SSL/TLS -Verschlüsselung für MySQL -Verbindungen? Mar 18, 2025 pm 12:01 PM

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

See all articles