MySQL中如何用查询出的distinct tahun值作为统计条件?
解决方法
你不需要用类似foreach的循环逻辑,SQL的分组查询就能直接实现这个需求。把原来的写法改成按提取后的年份分组,分组后每组对应一个唯一的年份,再在组内统计各选项的数量即可:
SELECT SUBSTRING_INDEX(tahun, '/', -1) AS tahun, COUNT(CASE WHEN choice = 'A' THEN 1 END) AS A, COUNT(CASE WHEN choice = 'B' THEN 1 END) AS B, COUNT(CASE WHEN choice = 'C' THEN 1 END) AS C FROM tes GROUP BY SUBSTRING_INDEX(tahun, '/', -1);
说明
GROUP BY SUBSTRING_INDEX(tahun, '/', -1)会把所有提取出相同年份的行归为一组,自动覆盖所有distinct的年份值,不需要手动指定年份条件。- 每个分组内的
COUNT(CASE...)会统计当前年份下对应选项的数量,替代了你原来固定匹配%2008%的写法,实现了对每个年份的自动统计。
内容的提问来源于stack exchange,提问作者Hoshizora-N
相关产品推荐
相关产品推荐

