Heim >Datenbank >MySQL-Tutorial >Wie kann man mithilfe von SQL-Joins effizient Max/Min-Werte pro Gruppe finden?

Wie kann man mithilfe von SQL-Joins effizient Max/Min-Werte pro Gruppe finden?

DDD
DDDOriginal
2025-01-02 13:41:38495Durchsuche

How to Efficiently Find Max/Min Values per Group Using SQL Joins?

Maximal-/Minimalwerte pro Gruppe mithilfe von Joins abrufen

In dieser Lösung verwenden wir einen Join-Vorgang, um Zeilen mit den höchsten oder niedrigsten Werten für eine bestimmte Spalte darin abzurufen jede Gruppe, ohne auf Rangfolge oder Unterabfragen zurückgreifen zu müssen.

Um die Zeile mit dem höchsten OrderField-Wert pro zu finden Gruppe:

SELECT t1.*
FROM `Table` AS t1
LEFT OUTER JOIN `Table` AS t2
  ON t1.GroupId = t2.GroupId AND t1.OrderField < t2.OrderField
WHERE t2.GroupId IS NULL
ORDER BY t1.OrderField;

Im Falle mehrerer Datensätze, die innerhalb einer Gruppe denselben maximalen OrderField-Wert teilen, möchten Sie möglicherweise die Bedingung weiter verfeinern:

SELECT t1.*
FROM `Table` AS t1
LEFT OUTER JOIN `Table` AS t2
  ON t1.GroupId = t2.GroupId 
        AND (t1.OrderField < t2.OrderField 
         OR (t1.OrderField = t2.OrderField AND t1.Id < t2.Id))
WHERE t2.GroupId IS NULL

Dieser Ansatz stellt sicher, dass die Die Zeile mit dem größten OrderField-Wert wird zurückgegeben, wenn es Gleichstände innerhalb einer Gruppe gibt.

Das obige ist der detaillierte Inhalt vonWie kann man mithilfe von SQL-Joins effizient Max/Min-Werte pro Gruppe finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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