Postgresql在1列上与尽可能高的第二列有区别



我在PostgreSQL中有2列表:

  • id
  • employee_id

在这个表中,有些记录的employee_id重复,但总是唯一的。我需要得到唯一的employee_id与最高的id可能。我想要实现的是基于employee_id的不同查询,具有可能的最高id。因此,如果有2条记录具有相同的employee_id,但其中一条的id高于另一条,那么我想获得具有更高id的记录。

试过这个查询:

SELECT DISTINCT ON (employee_id) id, employee_id
FROM table_name
ORDER BY id DESC;

但是首先order by需要与distinct on具有相同的值,其次在我的情况下它不会工作,因为它会在select distinct之后对记录进行排序。

第二次尝试也没有得到正确的记录:

SELECT *
FROM
(
SELECT DISTINCT ON (employee_id) *
FROM
(
SELECT *
FROM table_name
ORDER BY id DESC
) AS sub
) AS sub2
ORDER BY id DESC;
我将非常感谢你的帮助和提示。
SELECT
DISTINCT ON (employee_id) employee_id,
id
FROM
table_name
ORDER BY
employee_id, id DESC;

您可以使用groub bymax():

select employee_id, max(id)
from table_name
group by employee_id
order by employee_id;

相关内容

  • 没有找到相关文章

最新更新