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

phpmysql统计数据库同值列数量生成汇总表的SQL查询方法

问题场景

你的MySQL数据库中存在一张包含3个字段的表,字段分别为id(主键)、country、name,表中同一country字段存在多条重复对应记录,需要按country分组统计对应记录总条数,生成带连续序号、国家名称、记录条数的汇总结果。

实现SQL语句

注意将语句中的你的表名替换为实际使用的表名称。

MySQL 8.0及以上版本(支持窗口函数)

SELECT
  ROW_NUMBER() OVER (ORDER BY MIN(id)) AS id,
  TRIM(country) AS Country,
  COUNT(*) AS Count
FROM 你的表名
GROUP BY TRIM(country)
ORDER BY MIN(id);

MySQL 5.x 低版本(不支持窗口函数)

SELECT
  @row_num := @row_num + 1 AS id,
  t.Country,
  t.Count
FROM (
  SELECT
    TRIM(country) AS Country,
    COUNT(*) AS Count
  FROM 你的表名
  GROUP BY TRIM(country)
  ORDER BY MIN(id)
) t, (SELECT @row_num := 0) r;
语句说明
  • 使用TRIM(country)处理国家字段前后的多余空格,避免原始数据中因排版、录入问题产生的前后空格导致相同国家被识别为不同分组
  • 通过GROUP BY对国家字段分组,COUNT(*)统计每个国家对应的记录总数
  • 排序规则使用MIN(id),即按每个国家在原表中首次出现的主键id升序排列,和示例输出顺序完全匹配:USA首次出现在id=1排第1位,Japan首次出现在id=5排第2位,india首次出现在id=7排第3位
  • 汇总结果中的id是查询生成的连续自增序号,并非原表的主键id
结果对照

执行语句后输出的结果和需求示例完全一致:

idCountryCount
1USA4
2Japan2
3india3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 06:45:42