Heim >Datenbank >MySQL-Tutorial >Wie sortiere ich nach Datum und Uhrzeit, bevor ich in MySQL nach Namen gruppiere?

Wie sortiere ich nach Datum und Uhrzeit, bevor ich in MySQL nach Namen gruppiere?

Linda Hamilton
Linda HamiltonOriginal
2024-11-01 22:59:29543Durchsuche

How to Order by Date and Time Before Grouping by Name in MySQL?

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:

  • Die Unterabfrage erstellt einen Zwischenergebnissatz, indem die Zeilen zuerst nach Datum und dann aufsteigend nach Zeit sortiert werden.
  • Die äußere Abfrage wählt alle Spalten aus der Unterabfrage aus und führt die GROUP BY-Operation für die Namensspalte aus.

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!

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