我在PostgreSQL中有一个表,有两列:
- 身份证
- 员工ID
在这个表中,有一些记录具有重复的employee_id,但始终是唯一的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;
我将非常感谢帮助和提示。
2条答案
按热度按时间xqk2d5yq1#
xzabzqsa2#
你可以使用
groub by
和max()
来实现: