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

如何在MySQL中获取逗号分隔的最新10条表记录ID?

解决MySQL获取最新10条ID并逗号分隔的问题

问题根源

你原SQL的问题出在GROUP BY item.id:这个语句会把每个item.id作为独立分组,每个分组里只有一条数据,所以GROUP_CONCAT只能输出单个ID,最终返回10行各含一个ID的结果,和你要的单行逗号分隔列表不符。

MySQL 5.6 解决方案

因为5.6不支持窗口函数,先用子查询筛选出最新10个ID,再在外层用GROUP_CONCAT合并:

SELECT GROUP_CONCAT(id ORDER BY id DESC) AS Item_IDs
FROM (
    -- 先获取最新的10个ID
    SELECT id
    FROM items
    ORDER BY id DESC
    LIMIT 10
) AS latest_items;

子查询先拿到排序后的前10个ID,外层查询没有GROUP BY,默认将整个子查询结果作为一个分组,GROUP_CONCAT就会把所有ID合并成一个逗号分隔的字符串。

MySQL 8.0 解决方案

8.0支持窗口函数,除了复用5.6的子查询方式,还可以用ROW_NUMBER()实现更灵活的筛选:

SELECT GROUP_CONCAT(id ORDER BY id DESC) AS Item_IDs
FROM (
    SELECT id,
           -- 按ID倒序排名,最新的ID排第1
           ROW_NUMBER() OVER (ORDER BY id DESC) AS rn
    FROM items
) AS ranked_items
-- 取排名前10的ID
WHERE rn <= 10;

这种方式适合需要更复杂筛选规则的场景(比如按其他字段分组后取每组最新N条),如果只是全局取最新10条,两种方式效果一致。

额外说明

如果需要自定义分隔符,可以在GROUP_CONCAT里加SEPARATOR参数,比如GROUP_CONCAT(id SEPARATOR '|')就能用竖线分隔ID。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:30:56