Um die ID mit maximalem Datum für jede Kategorie innerhalb einer Tabelle zu ermitteln, bietet PostgreSQL einen geeigneten Ansatz. Betrachten wir die Beispieldaten:
id | category | date |
---|---|---|
1 | a | 2013-01-01 |
2 | b | 2013-01-03 |
3 | c | 2013-01-02 |
4 | a | 2013-01-02 |
5 | b | 2013-01-02 |
6 | c | 2013-01-03 |
7 | a | 2013-01-03 |
8 | b | 2013-01-01 |
9 | c | 2013-01-01 |
Um das gewünschte Ergebnis zu erzielen, können wir die DISTINCT ON-Klausel von PostgreSQL verwenden. Mit dieser Klausel können wir eindeutige Zeilen basierend auf einem angegebenen Ausdruck auswählen und die Ergebnisse nach einer anderen Spalte gruppieren. In diesem Fall gruppieren wir die Zeilen nach Kategorie und wählen die eindeutige ID mit dem maximalen Datum innerhalb jeder Gruppe aus.
Hier ist die Abfrage, um dies zu erreichen:
SELECT DISTINCT ON (category) id -- , category, date -- any other column (expression) from the same row FROM tbl ORDER BY category, date DESC;
Die DISTINCT ON-Klausel stellt sicher, dass nur das erste Vorkommen jedes eindeutigen Kategoriewerts ausgewählt wird. Die ORDER BY-Klausel sortiert die Ergebnisse zunächst nach Kategorie in aufsteigender Reihenfolge (alphabetische Reihenfolge) und dann nach Datum in absteigender Reihenfolge. Durch diese Reihenfolge wird sichergestellt, dass die Zeile mit dem neuesten Datum für jede Kategorie zuerst angezeigt wird.
Das Ausführen dieser Abfrage führt zu folgendem Ergebnis:
id |
---|
7 |
2 |
6 |
Diese IDs (7, 2, 6) repräsentieren die maximalen Daten für die Kategorien a, b bzw. c.
Das obige ist der detaillierte Inhalt vonWie finde ich die ID mit dem maximalen Datum für jede Kategorie in PostgreSQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!