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

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

Susan Sarandon
Freigeben: 2024-12-28 17:09:11
Original
390 Leute haben es durchsucht

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

PostgreSQL: Abrufen der letzten Zeile für jede ID

Problem:

Gegeben sind die folgenden Daten, die Sie extrahieren möchten der letzte Datensatz für jede eindeutige ID:

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

Gewünscht Ergebnis:

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

Lösung:

Es gibt zwei effiziente Methoden, um dies in PostgreSQL zu erreichen:

Methode 1 : Verwendung des DISTINCT ON-Operators

Postgres stellt den DISTINCT ON-Operator bereit, der ermöglicht es Ihnen, unterschiedliche Zeilen basierend auf einer oder mehreren Spalten auszuwählen und dann andere Vorgänge anzuwenden. Für dieses Szenario können Sie Folgendes verwenden:

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

Methode 2: Verwenden einer Fensterfunktion

Mit Fensterfunktionen können Sie Aggregationen oder Berechnungen über eine Reihe von Zeilen durchführen die dynamisch definiert werden kann. Sie können eine Fensterfunktion namens ROW_NUMBER() verwenden, um jeder Zeile innerhalb jeder ID-Gruppe einen Rang zuzuweisen und die Zeile mit dem höchsten Rang auszuwählen:

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

Die Lösung mit einer Fensterfunktion ist normalerweise schneller als mit eine Unterabfrage.

Das obige ist der detaillierte Inhalt vonWie kann ich die letzte Zeile für jede ID in PostgreSQL effizient 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage