主题
本文主要分享一下,涉及到以下两种数据情况,如何写统计。
情况1:一个字段包含多个级别,例如:1,2,3 。这种情况如何转化为中文
情况2:如果将多个字段合并展示,例如:字段1和字段2合并展示
具体示例如下,以下仅为展示具体情况,具体的字段含义不太准确
1.表结构
CREATE TABLE `t_course` (
`id` int(12) NOT NULL COMMENT '主键',
`course_level` varchar(20) DEFAULT NULL COMMENT '1初级2中级3高级',
`open_student` int(1) DEFAULT NULL COMMENT '面向学生,1是,0否',
`open_teacher` int(1) DEFAULT NULL COMMENT '面向老师,1是,0否',
`open_patriarch` int(1) DEFAULT NULL COMMENT '面向家长,1是,0否',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
2.数据库数据
3.统计需要的展示效果
4.SQL编写
首先需要建立一张课程等级字典表,如下:
CREATE TABLE `t_level_dict` (
`id` int(2) NOT NULL COMMENT '主键',
`level_code` int(1) DEFAULT NULL COMMENT '等级编码',
`level_name` varchar(10) DEFAULT NULL COMMENT '等级名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
字典表的数据如下:
然后开始我们的SQL编写,SQL如下:
select (
select GROUP_CONCAT(level_name SEPARATOR ',') from t_level_dict t2 where FIND_IN_SET(t2.ID,t1.course_level) ) as '课程等级',
CONCAT(IF(t1.open_student != '0','学生,',''),IF(t1.open_teacher != '0','老师,',''),IF(t1.open_patriarch != '0','家长','')) as '面向对象'
from t_course t1
可以看到效果如下: