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

SQL查询每个id对应多行时如何选取最后一条记录

解决方案

你需求中的「每个id的最后一条记录」可通过parent_id字段的大小判断:parent_id越大对应记录越靠后,以下是两种常用的实现方案:

方案1:窗口函数法(兼容MySQL8.0+、PostgreSQL、SQL Server、Oracle等所有支持SQL:2003标准的数据库)

通过ROW_NUMBER()窗口函数对相同id的记录按parent_id倒序排序,取排序后第一位的记录即可:

SELECT id, category
FROM (
    SELECT 
        id,
        category,
        ROW_NUMBER() OVER (PARTITION BY id ORDER BY parent_id DESC) AS rn
    FROM 你的表名/视图名
) AS temp
WHERE rn = 1;

方案2:子查询关联法(兼容MySQL5.x等不支持窗口函数的低版本数据库)

先通过分组查询拿到每个id对应的最大parent_id,再关联原表匹配对应category值:

SELECT t1.id, t1.category
FROM 你的表名/视图名 t1
INNER JOIN (
    SELECT id, MAX(parent_id) AS max_pid
    FROM 你的表名/视图名
    GROUP BY id
) t2 ON t1.id = t2.id AND t1.parent_id = t2.max_pid;

两种方案执行后均可得到你需要的结果:

idcategory
01car
02bike
03van
04bicycle

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:39:02