mysql如何分类统计数量
比如我表test里面有id,mc,xh三个字段(分别是自动编号,钢材名称(若干种),钢材型号(大号,中号,小号))
id mc xh 1 钢管 大号 2 铜管 大号 3 铁管 小号 4 铝管 中号 5 钢管 小号
我现在要分别统计出“mc”里面的各种型号的东西有多少。意思是:
我要统计钢管,铜管,铁管,铝管的大,中,小号各有多少条记录。
并且mc里面的是不固定的,可能还有金管,还有熟料管什么的,,但是xh里面只有三种情况,那就是大号,中号,小号:
1.在mysql中建立一个测试数据表
CREATE TABLE `tb_test_count` ( `id` bigint(20) NOT NULL, `mc` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL, `xh` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
2.插入一批数据
INSERT INTO tb_test_count VALUES(1,'钢管','大号'); INSERT INTO tb_test_count VALUES(2,'铜管','大号'); INSERT INTO tb_test_count VALUES(3,'铁管','小号'); INSERT INTO tb_test_count VALUES(4,'铝管','大号'); INSERT INTO tb_test_count VALUES(5,'铝管','小号'); INSERT INTO tb_test_count VALUES(6,'钢管','大号'); INSERT INTO tb_test_count VALUES(7,'钢管','小号');
3.查询统计的SQL语句
select mc,count(case when xh='大号' then 1 end) as 大号, count(case when xh='中号' then 1 end) as 中号, count(case when xh='小号' then 1 end) as 小号 from tb_test_count group by mc
4.查询结果截图如下:
5.如果使用sum方法查询则(当数据一条都不存在的时候查询出来的结果是null)
select mc,sum(case when xh='大号' then 1 end) as 大号, sum(case when xh='中号' then 1 end) as 中号, sum(case when xh='小号' then 1 end) as 小号 from tb_test_count group by mc
当一个表中需要统计某个字段中不同类型的数据条数的时候,可以使用该方法。

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律