MySQL如何统计concern1/concern2/concern3三列同类数据的出现次数
实现思路
将表中三列关注字段的非空有效值合并为单个列,再按关注值分组统计总出现次数即可。
可用MySQL查询语句
请先将语句中的concern_table替换为你实际使用的表名:
SELECT concern_val AS Concern, COUNT(*) AS Count FROM ( SELECT concern1 AS concern_val FROM concern_table WHERE concern1 IS NOT NULL UNION ALL SELECT concern2 AS concern_val FROM concern_table WHERE concern2 IS NOT NULL UNION ALL SELECT concern3 AS concern_val FROM concern_table WHERE concern3 IS NOT NULL ) AS merged_concerns GROUP BY concern_val ORDER BY Count DESC;
补充说明
- 如果你的表中无值的字段存储的是空字符串而非
NULL,可以把每个子查询的过滤条件调整为WHERE concernX != '' - 语句使用
UNION ALL而非UNION,不会自动去重,可保证计数的准确性 - 查询结果默认按出现次数从高到低排序,和你给出的期望输出顺序一致
内容的提问来源于stack exchange,提问作者Glen McCabe
相关产品推荐
相关产品推荐

