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

查询结果:

 

posted @ 2020-12-08 09:23  风中的摇坠  阅读(392)  评论(0)    收藏  举报