«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как эффективно получить последнюю строку для каждого уникального идентификатора в PostgreSQL?

Как эффективно получить последнюю строку для каждого уникального идентификатора в PostgreSQL?

Опубликовано в 2025-04-04
Просматривать:705

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

postgresql: извлечение последней строки для каждого уникального идентификатора

В Postgresql вы можете столкнуться с ситуациями, где вам необходимо извлечь информацию из последней строки, связанного с каждым отдельным идентификатором в данном данных. Рассмотрим следующие данные:

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


, чтобы получить последнюю строку информации для каждого уникального идентификатора в наборе данных, вы можете использовать эффективную отчетливую на операторе Postgres:

]

] Этот запрос вернет следующий вывод:
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;
 date date ore_info 

1 2014-05-13 Kgfd

2 2014-02-01 SADA

. Решение по перекрестной датабазе, которое может пожертвовать небольшой производительностью, вы можете использовать функцию окна:
]
выберите идентификатор, дата, другой_инфо от ( Выберите идентификатор, дата, другой_инфо, row_number () Over (раздел по идентификационному порядку по дате desc) как rn от the_table ) т где rn = 1 Заказ от id;

В большинстве случаев решение с участием оконной функции быстрее, чем использование подрегистрирования.

]
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3