Heim >Datenbank >MySQL-Tutorial >Wie kann man mithilfe von SQL-Joins effizient Max/Min-Werte pro Gruppe finden?
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!