MySQL函数Group_concat()和find_in_set()函数
一、讲解前的准备
student(学生表)

subject(科目表)

二、Group_concat()函数
用法:在一个查询语句中的,将同一个group by的分组的下的指定字段连成一个以符号(默认是逗号)分隔的字符串
语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )
select sex, GROUP_CONCAT(name) from student group by sex
查询结果:

三、FIND_IN_SET(expr1,expr2)
用法:查询expr2中是否有expr1,有的话返回expr1在expr2的下标位置,没有的话返回0。其中expr2是以逗号连接的字符串,如'1','2','3'
select FIND_IN_SET('2','1,3,2,4')
查询结果:

四、两者配合一起使用
使用场景:现在想将查出每个学生科目有哪些,即将subjectCode转化为中文:

SQL语句:
select s.name, s.sex, GROUP_CONCAT(sub.name) subject from student s,subject sub where FIND_IN_SET(sub.id,s.subjectCode) group by s.id
查询结果:


浙公网安备 33010602011771号