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

Wie kann ich die letzte Zeile für jeden eindeutigen Bezeichner in PostgreSQL effizient abrufen?

DDD
DDDOriginal
2024-12-17 14:59:10399Durchsuche

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

PostgreSQL: Extrahieren der letzten Zeile für jeden eindeutigen Bezeichner

In PostgreSQL kann es vorkommen, dass Sie die Informationen aus dem extrahieren müssen letzte Zeile, die jedem eindeutigen Bezeichner innerhalb eines Datensatzes zugeordnet ist. Berücksichtigen Sie die folgenden Daten:

  ID-Datum another_info<br> 1 2014-02-01 kjkj<br> 1 2014-03-11 ajskj<br> 1 2014-05-13 kgfd<br> 2 2014-02-01 SADA<br> 3 2014-02 -01 sfdg<br> 3 2014-06-12 fdsA<br>

Um die letzte Informationszeile für jede eindeutige ID im Datensatz abzurufen, können Sie den effizienten Distinct-On-Operator von Postgres verwenden:

select distinct on (id) id, date, another_info
from the_table
order by id, date desc;

Diese Abfrage gibt Folgendes zurück Ausgabe:

  ID-Datum another_info<br> 1 2014-05-13 kgfd<br> 2 2014-02-01 SADA<br> 3 2014-06-12 fdsA<br>

Wenn Sie es vorziehen Für eine datenbankübergreifende Lösung, die möglicherweise geringfügige Leistungseinbußen mit sich bringt, können Sie ein Fenster verwenden Funktion:

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;

In den meisten Fällen ist die Lösung mit einer Fensterfunktion schneller als die Verwendung einer Unterabfrage.

Das obige ist der detaillierte Inhalt vonWie kann ich die letzte Zeile für jeden eindeutigen Bezeichner in PostgreSQL effizient abrufen?. 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