You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL获取指定a值组中最大id行的SQL语句写法

解决方案

你的源表数据整理如下:

ida
11
21
32
43
53
64
74

预期输出:

ida
21
53

以下是几种可行的PostgreSQL SQL写法:

方法一:子查询关联

先筛选目标a值,分组获取每个a对应的最大id,再关联原表拿到完整记录:

SELECT t.*
FROM your_table t
JOIN (
    SELECT a, MAX(id) AS max_id
    FROM your_table
    WHERE a IN (1, 3)
    GROUP BY a
) sub ON t.id = sub.max_id AND t.a = sub.a;

方法二:窗口函数ROW_NUMBER()

利用窗口函数按a分组、id降序排序,取每组第一条记录:

SELECT id, a
FROM (
    SELECT 
        id, 
        a,
        ROW_NUMBER() OVER (PARTITION BY a ORDER BY id DESC) AS rn
    FROM your_table
    WHERE a IN (1, 3)
) sub
WHERE rn = 1;

方法三:PostgreSQL专属DISTINCT ON语法

用PostgreSQL特有的DISTINCT ON语法,简洁实现分组取第一条:

SELECT DISTINCT ON (a) id, a
FROM your_table
WHERE a IN (1, 3)
ORDER BY a, id DESC;

注意:将语句中的your_table替换为你的实际表名即可。

内容的提问来源于stack exchange,提问作者Changkun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 11:35:23