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

如何统计ID列中各ID的出现次数并存储至新列

解决方案:为每行添加对应ID的出现次数

没问题,我来帮你搞定这个需求!你之前用的SELECT COUNT(ID) AS Count FROM table之所以没达到效果,是因为这个语句要么返回整个表的ID总数,要么加上GROUP BY ID后只会返回每个ID一行的统计结果,但你需要的是保留原表的每一行数据,同时新增一列显示对应ID的总出现次数。

这里有两种常用的解决方案,根据你的数据库版本选择即可:

方法一:使用窗口函数(推荐,适用于MySQL 8+、PostgreSQL、SQL Server等现代数据库)

窗口函数可以直接在每行计算对应分组的统计值,写法非常简洁:

SELECT 
    ID,
    COUNT(ID) OVER (PARTITION BY ID) AS Count
FROM your_table_name;
  • PARTITION BY ID:将数据按ID分组,把相同ID的行归为一组
  • COUNT(ID) OVER (...):计算每个分组内的行数,并且把这个结果赋值给分组内的每一行

运行这个查询后,就能得到你期望的结果:

ID Count
1 3
1 3
1 3
2 2
2 2
3 3
3 3
3 3
4 1

方法二:子查询关联(适用于不支持窗口函数的旧版本数据库,比如MySQL 5.x)

如果你的数据库不支持窗口函数,可以先通过子查询统计每个ID的次数,再通过JOIN关联回原表:

SELECT 
    t1.ID,
    t2.id_count AS Count
FROM your_table_name t1
INNER JOIN (
    SELECT ID, COUNT(ID) AS id_count
    FROM your_table_name
    GROUP BY ID
) t2 ON t1.ID = t2.ID;

这个方法的逻辑是:先在子查询里统计每个ID的出现次数,然后把原表的每一行和对应的统计结果通过ID关联起来,从而让每行都能拿到对应ID的计数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 08:37:44