场景:用户中心,一个用户是对应多个角色的,登录系统之后需要返回用户信息给前端,其中包含多个用户角色
这个时候,group_concat函数就出场了,当然这是针对于MySql去使用;
group_concat函数首先根据group by指定的列进行分组,将同一组的列显示出来,并且用分隔符分隔,默认是用“,”(逗号)分割,也可以指定分隔符如:
GROUP_CONCAT( DISTINCT role_id Separator ';')
如果需要对结果中的值进行排序,也可以使用order by子句,
附上数据库查询示例:
加上去重和指定分隔符:
一对多表也是如此,当你的需求是将某个字段内容串联到一条数据上就可以使用此函数;
又让我想起了find_in_set函数 ,这个函数的使用介绍:
score:"88","96","38","92"
这个时候我想查score字段包含38的,就可以用find_in_set函数,
SELECT * FROM table WHERE FIND_IN_SET(38,score);
这个时候有人会问了,我用like %去模糊查询不行吗,我举个例子:
score:"88","96","38","92","138",
像上面内容你用模糊查询去查是不是包含38的都查出来了呢,138也会查出来,而find_in_set函数是按英文逗号分割,精确匹配的,详细资料可自行百度。