Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie wähle ich das gruppenweise Maximum in MySQL aus?

Susan Sarandon
Freigeben: 2024-11-22 09:56:11
Original
946 Leute haben es durchsucht

How to Select the Group-Wise Maximum in MySQL?

Auswählen des gruppenweisen Maximums in MySQL

In relationalen Datenbanken müssen Sie manchmal die Zeile mit dem Maximalwert einer bestimmten Spalte für jede Gruppe abrufen. Dies wird als Auswahl des gruppenweisen Maximums bezeichnet. In MySQL gibt es mehrere Ansätze, um dies zu erreichen.

Unterabfragemethode

Eine effiziente Methode ist die Verwendung einer Unterabfrage:

SELECT *
FROM (
  SELECT id, MAX(version_id) AS version_id
  FROM table
  GROUP BY id
) AS t1
INNER JOIN table AS t2
  ON t2.id = t1.id AND t1.version_id = t2.version_id;
Nach dem Login kopieren

Diese Unterabfrage erstellt eine Tabelle der Ermittelt die maximalen Versions-IDs für jede ID und verknüpft sie dann mit der Originaltabelle, um die entsprechenden Zeilen abzurufen. Es ist relativ effizient und setzt das Vorhandensein eines Index für die Spalten (id, version_id) voraus.

Aggregations- und Ranking-Methoden

Alternativ können Sie Aggregations- und Ranking-Funktionen verwenden:

SELECT id,
       version_id,
       field1,
       field2
FROM (
  SELECT id,
          version_id,
          field1,
          field2,
          RANK() OVER (PARTITION BY id ORDER BY version_id DESC) AS ranking
  FROM table
) AS ranked_table
WHERE ranking = 1;
Nach dem Login kopieren

Diese Abfrage ordnet die Zeilen für jede ID in absteigender Reihenfolge der Versions-ID und wählt diejenigen mit der Rangfolge 1 aus, wodurch effektiv nach dem Maximum gefiltert wird Version.

Fensterfunktionen

Zu diesem Zweck können auch Fensterfunktionen verwendet werden:

SELECT id,
       version_id,
       field1,
       field2
FROM (
  SELECT id,
          version_id,
          field1,
          field2,
          MAX(version_id) OVER (PARTITION BY id) AS max_version_id
  FROM table
) AS windowed_table
WHERE version_id = max_version_id;
Nach dem Login kopieren

Diese Abfrage berechnet die maximale Versions-ID für jede ID mithilfe von MAX() over()-Fensterfunktion und wählt die Zeilen mit übereinstimmenden Versions-IDs aus.

Das obige ist der detaillierte Inhalt vonWie wähle ich das gruppenweise Maximum in MySQL aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage