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

PostgreSQL中使用OVER窗口函数查询每个用户最大index对应记录的方法

PostgreSQL 查询每个用户最大index对应记录的SQL实现

注意:user和index都是PostgreSQL的保留关键字,实际查询时需要用双引号包裹字段名,避免语法报错。

方案1:窗口函数实现(推荐,性能更优)

适合大多数场景,逻辑清晰,查询效率高:

SELECT "id", "user", "index"
FROM (
    SELECT 
        *,
        ROW_NUMBER() OVER (PARTITION BY "user" ORDER BY "index" DESC) AS rank_num
    FROM 实际表名 -- 替换为你的业务表名
) AS temp_table
WHERE rank_num = 1;

逻辑说明:用PARTITION BY "user"按用户分组,每组内按index倒序排序,每组排序为1的记录就是对应用户index最大的最新记录。如果同一个用户存在多条相同最大index的记录,需要全部返回时,把ROW_NUMBER()替换为RANK()即可。

方案2:关联子查询实现

兼容性更强,不依赖窗口函数特性:

SELECT t1."id", t1."user", t1."index"
FROM 实际表名 t1
INNER JOIN (
    SELECT "user", MAX("index") AS max_index
    FROM 实际表名
    GROUP BY "user"
) t2 ON t1."user" = t2."user" AND t1."index" = t2.max_index;

逻辑说明:先通过分组聚合查出每个用户的最大index值,再和原表关联匹配,拿到对应最大index的完整记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:06:04