ORDER BY Datum und Uhrzeit vor GROUP BY Name in MySQL
In MySQL wird die ORDER BY-Klausel vor der GROUP BY-Klausel angewendet. In bestimmten Szenarien müssen Benutzer jedoch Daten nach Datums- und Zeitfeldern sortieren, bevor sie ein GROUP BY für die Namensspalte durchführen.
Betrachten Sie die folgende Tabelle:
name | date | time |
---|---|---|
tom | 2011-07-04 | 01:09:52 |
tom | 2011-07-04 | 01:09:52 |
mad | 2011-07-04 | 02:10:53 |
mad | 2009-06-03 | 00:01:01 |
Das Ziel ist Rufen Sie zuerst den ältesten Namen ab. Die folgende Abfrage schlägt fehl:
SELECT * ORDER BY date ASC, time ASC GROUP BY name
Dies liegt daran, dass GROUP BY vor ORDER BY angewendet wird, was zur Gruppierung von Datensätzen mit demselben Namen vor dem Sortieren führt. Infolgedessen wird die erwartete Reihenfolge nicht erreicht.
Lösung:
Um dieses Problem zu lösen, kann man den folgenden Ansatz verwenden:
SELECT * FROM ( SELECT * FROM table_name ORDER BY date ASC, time ASC ) AS sub GROUP BY name
In dieser Abfrage:
Mit dieser Methode wird GROUP BY auf die geordnete Ergebnismenge angewendet, um sicherzustellen, dass der älteste Name zuerst abgerufen wird, unabhängig von Datum und Uhrzeit Felder.
Das obige ist der detaillierte Inhalt vonWie sortiere ich nach Datum und Uhrzeit, bevor ich in MySQL nach Namen gruppiere?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!