您现在的位置是:首页 > 学无止境 > MYSQL网站首页MYSQL MySQL中find_in_set()函数的使用
MySQL中find_in_set()函数的使用
- MYSQL
- 2019-04-17
简介在此最近的一个项目的设计中,有以下场景:部门和职员的两张表,部门是有很多节点的,比如XXX部门下面还细分了很多组,而职员表中是使用一个字段和具体的部门组关联的。如果我需要查询XXX部门下的所有职员呢?字数
999.5
在一个项目的设计中,有以下场景:部门和职员的两张表,部门是有很多节点的,比如XXX部门下面还细分了很多组,而职员表中是使用一个字段和具体的部门组关联的。如果我需要查询XXX部门下的所有职员呢?
在查阅了很多资料之后,做以下记录:
部门表
其中的ancestors字段就会用于记录当前的节点的所有父节点,比如:XXX部门的id为1,XXX部门下的XXX小组的id为101,XXX部门下的XXX小组的XXX临时小组的id为201,那么此时的数据如下:
1. 首先是XXX部门的ancestors的值为1
2. 其次是XXX部门下的XXX小组的ancestors为1,101
3. 最后XXX部门下的XXX小组的XXX临时小组的ancestors为1,101,201
职员表
以上表中的dept_id就是记录的所属部门的id;
功能实现
为了实现引言所提到的功能,需要用到以下MySQL函数FIND_IN_SET(str,strlist),
str 表示要查询的字符串
strlist为字段名,以,隔开,如(1,101,201)
其意思为:查询字段strList中包含str的结果,返回null或者记录
注:假如字符串str在由N个子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间。 一个字符串列表就是一个由一些被 ‘,’ 符号分开的子链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则FIND_IN_SET() 函数被优化,使用比特计算。 如果str不在strlist 或strlist 为空字符串,则返回值为 0 。如任意一个参数为NULL,则返回值为 NULL。这个函数在第一个参数包含一个逗号(‘,’)时将无法正常运行。
那么功能实现的写法为:
转载:
感谢您对莫愁个人博客网站平台的认可,非常欢迎各位朋友分享到个人站长或者朋友圈,但转载请说明文章出处“来源莫愁个人博客 https://www.mochoublog.com/study/174.html”。
上一篇:MYSQL如何配置远程连接数据库
下一篇:SQL查询语句的执行方式
相关文章
- MYSQL
- 2019-04-17
在一个项目的设计中,有以下场景:部门和职员的两张表,部门是有很多节点的,比如XXX部门下面还细分了很多组,而职员表中是使用一个字段和具体的部门组关联的。如果我需要查询XXX部门下的所有职员呢?
在查阅了很多资料之后,做以下记录:
部门表
其中的ancestors字段就会用于记录当前的节点的所有父节点,比如:XXX部门的id为1,XXX部门下的XXX小组的id为101,XXX部门下的XXX小组的XXX临时小组的id为201,那么此时的数据如下:
1. 首先是XXX部门的ancestors的值为1
2. 其次是XXX部门下的XXX小组的ancestors为1,101
3. 最后XXX部门下的XXX小组的XXX临时小组的ancestors为1,101,201
职员表
以上表中的dept_id就是记录的所属部门的id;
功能实现
为了实现引言所提到的功能,需要用到以下MySQL函数FIND_IN_SET(str,strlist),
str 表示要查询的字符串
strlist为字段名,以,隔开,如(1,101,201)
其意思为:查询字段strList中包含str的结果,返回null或者记录
注:假如字符串str在由N个子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间。 一个字符串列表就是一个由一些被 ‘,’ 符号分开的子链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则FIND_IN_SET() 函数被优化,使用比特计算。 如果str不在strlist 或strlist 为空字符串,则返回值为 0 。如任意一个参数为NULL,则返回值为 NULL。这个函数在第一个参数包含一个逗号(‘,’)时将无法正常运行。
那么功能实现的写法为:
转载: 感谢您对莫愁个人博客网站平台的认可,非常欢迎各位朋友分享到个人站长或者朋友圈,但转载请说明文章出处“来源莫愁个人博客 https://www.mochoublog.com/study/174.html”。
上一篇:MYSQL如何配置远程连接数据库
下一篇:SQL查询语句的执行方式