当前位置:   article > 正文

Mysql 逗号分隔id,查询出逗号分割的name,find_in_set的使用_查询 部门全称名称 find_in_set(pd.dept_id, concat(sd.ancest

查询 部门全称名称 find_in_set(pd.dept_id, concat(sd.ancestors,',',sd.dept_id

举个例子:

查询 部门关系表,一个节点id对应着多个部门id
在这里插入图片描述
部门表:一个id一个名称
在这里插入图片描述
需求就是要查询一个节点id对应的多个部门名称。

查询语句如下:
在这里插入图片描述
拆开解释下:

其中主要就是需要注意on后面的连接条件

连表条件用的是 find_in_set(str,strList)>0
find_in_set(str,strList)返回的是str在strList中第一次出现的位置,从1开始,如果返回值大于0,就说明strList中包括了str,也就是上面例子中:departmentId存在在departments这个字段中,把这个作为连表条件,关联表的departments和部门表的id进行关联。

了解下find_in_set(str,strList)的用法:
在这里插入图片描述
所以上面用find_in_set(str,strList)的返回值大于0来判断str是否在strList中,用这样的判断来建立连接关系。

再来看select后面的 group_concat(str) 搭配group by使用,是为了name查出来的格式(‘杭州分行,同城支行’)对应着departments的格式(‘002,003’)
在用下图来理解下:group_concat(name)用来合并name(类似列转行),group by 用来按照节点id分组

在这里插入图片描述

group_concat(str)如下图,就是有点类似列转行的功能,默认是用逗号分隔
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/230874
推荐阅读
相关标签
  

闽ICP备14008679号