Re: [SQL] Most recent row

Поиск
Список
Период
Сортировка
От David G. Johnston
Тема Re: [SQL] Most recent row
Дата
Msg-id CAKFQuwb5ap3=_VvWOAnYG6E4aChk3jQTztube+UW=Kk29V01fQ@mail.gmail.com
обсуждение исходный текст
Ответ на [SQL] Most recent row  (Gary Stainburn <gary.stainburn@ringways.co.uk>)
Ответы Re: [SQL] Most recent row  (Adrian Klaver <adrian.klaver@aklaver.com>)
Re: [SQL] Most recent row  (Thomas Kellerer <spam_eater@gmx.net>)
Список pgsql-sql
On Fri, May 5, 2017 at 1:25 AM, Gary Stainburn <gary.stainburn@ringways.co.uk> wrote:
This question has been asked a few times, and Google returns a few different
answers, but I am interested people's opinions and suggestions for the *best*
wat to retrieve the most recent row from a table.

My case is:

create table people (
  p_id  serial primary key,
 ......
);

create table assessments (
  p_id  int4 not null references people(p_id),
  as_timestamp  timestamp not null,
  ......
);

select p.*, (most recent) a.*
  from people p, assessments a
  ..
;

​I would start with something using DISTINCT ON and avoid redundant data.  If performance starts to suck I would then probably add a field to people where you can record the most recent assessment id and which you would change via a trigger on assessments.

(not tested)​

​SELECT DISTINCT ON (p) p, a
FROM people p
LEFT JOIN ​assessments a USING (p_id)
ORDER BY p, a.as_timestamp DESC;

David J.

В списке pgsql-sql по дате отправления:

Предыдущее
От: hubert depesz lubaczewski
Дата:
Сообщение: Re: [SQL] Most recent row
Следующее
От: Adrian Klaver
Дата:
Сообщение: Re: [SQL] Most recent row