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

如何编写PostgreSQL查询获取每个id对应最大last_track的整行数据

解法1:使用PostgreSQL特有的DISTINCT ON语法(推荐,性能最优)

这是PostgreSQL针对分组取首行场景做过专门优化的原生语法,写法简洁执行效率高:

SELECT DISTINCT ON (id)
    id, model, lat, lng, alt, last_track
FROM 请替换为你的实际表名
ORDER BY id, last_track DESC;

逻辑说明:DISTINCT ON (id)会保留每个id分组的第一条返回记录,ORDER BY先按id分组排序,再按last_track倒序排列,因此每个id的第一条记录就是last_track值最大的整行数据,完全匹配你要的输出结果。

解法2:使用标准窗口函数(通用写法,适配所有支持窗口函数的数据库)

如果你需要跨数据库兼容,可以用ROW_NUMBER()窗口函数实现相同逻辑:

WITH ranked_records AS (
    SELECT 
        *,
        ROW_NUMBER() OVER (PARTITION BY id ORDER BY last_track DESC) AS rank_num
    FROM 请替换为你的实际表名
)
SELECT id, model, lat, lng, alt, last_track
FROM ranked_records
WHERE rank_num = 1;

逻辑说明:先给每个id分组内的所有记录按last_track倒序排名,筛选排名为1的记录即可得到每个id对应last_track最大的整行数据。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:54:04