Heim > Datenbank > MySQL-Tutorial > Wie kann ich in PostgreSQL effizient die aktuellste Zeile für jede ID abrufen?

Wie kann ich in PostgreSQL effizient die aktuellste Zeile für jede ID abrufen?

DDD
Freigeben: 2025-01-02 19:40:39
Original
456 Leute haben es durchsucht

How to Efficiently Retrieve the Most Recent Row for Each ID in PostgreSQL?

Abrufen der letzten Zeile für jede ID in PostgreSQL

Betrachten Sie einen Datensatz mit Spalten für ID, Datum und zusätzliche Informationen:

id    date          another_info
1     2014-02-01         kjkj
1     2014-03-11         ajskj
1     2014-05-13         kgfd
2     2014-02-01         SADA
3     2014-02-01         sfdg
3     2014-06-12         fdsA
Nach dem Login kopieren

Unser Ziel ist es, die aktuellste Zeile für jede eindeutige ID abzurufen.

Verwendung des Distinct On Operator

Der effizienteste Ansatz in PostgreSQL ist die Verwendung des DISTINCT ON-Operators:

SELECT DISTINCT ON (id) id, date, another_info
FROM the_table
ORDER BY id, date DESC;
Nach dem Login kopieren

Diese Abfrage identifiziert und gibt nur die erste eindeutige Zeile für jede eindeutige ID zurück, sortiert in absteigender Reihenfolge die Datumsspalte.

Fensterfunktionen verwenden

Für eine datenbankübergreifende Lösung können wir Fenster nutzen Funktionen:

SELECT id, date, another_info
FROM (
  SELECT id, date, another_info, 
  ROW_NUMBER() OVER (PARTITION BY id ORDER BY date DESC) AS rn
  FROM the_table
) t
WHERE rn = 1
ORDER BY id;
Nach dem Login kopieren

Diese Abfrage erstellt eine Fensterfunktion zur Berechnung der Zeilennummer für jede ID, sortiert nach Datum in absteigender Reihenfolge. Die Bedingung WHERE rn = 1 filtert Zeilen so, dass sie nur die höchstrangige Zeile für jede ID enthalten, und die abschließende ORDER BY-Klausel stellt sicher, dass die Ergebnisse nach ID sortiert werden.

Das obige ist der detaillierte Inhalt vonWie kann ich in PostgreSQL effizient die aktuellste Zeile für jede ID abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage