Как получить последние значения?

Как получить последние значения из таблицы

parent
| id  | name   | max_version |
| --- | ------ | ----------- |
| 1   | first  |      3      |
| 2   | second |      1      |

children
| id  | parent_id | version |  data  | 
| --- | --------- | ------- | ------ |
| 1   | 1         | 1       | data1  |
| 2   | 1         | 2       | data2  |
| 3   | 1         | 3       | data3  |
| 4   | 2         | 1       | data4  |

Хочу получить

| name  | data  |
| ----- | ----- |
| first | data3 |
| second| data4 |

В голову приходит только

SELECT p.name, c.data 
FROM parent p
JOIN children c on p.id=c.parent_id 
WHERE p.max_version = c.verstion

Но он выводит только одно значение.
База PostgreSQL 12
  • Вопрос задан
  • 62 просмотра
Решения вопроса 1
iMedved2009
@iMedved2009
Не люблю людей
SELECT p.name, FIRST_VALUE(c.data) over(order by version) as data
FROM parent p
JOIN children c on p.id=c.parent_id
Group by p.name;

Соррян не правильно прочитал

Хотя это будет ещё проще
SELECT p.name, c.data
FROM parent p
JOIN children c on p.id=c.parent_id and p.max_version = c.verstion;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы