一个字段有多个id且用的括号,逗号隔开,如果关联表查询sql语句

select o.*,GROUP_CONCAT(u.USER_NAME) as user
from uupm_user u JOIN uupm_org o
on FIND_IN_SET( u.USER_ID, REPLACE (REPLACE (o.day_leader_ids, '[', ''),']','') )
GROUP BY o.ORG_ID

 

①o.day_leader_ids字段存储时,使用中括号“[ ]”包起来的,所以第一步要去掉中括号(如果没有中括号,这一步可以省略),故而用到方法replace,此处的去中括号语句为: REPLACE ( REPLACE (A.hospital_catalog, '[', '') ,']','') 。其中紫色部分为去除中括号的左半部分“ [ ”,红色部分是在去掉左半部分括号的基础上去掉右半部分的括号“]”。 去除之后,原本是“[28,137,30]”的数据会变成“28,137,30”

②FIND_IN_SET(str,strlist),该函数用于判断 str 是否在 strlist 中,如果是,作为条件,返回对应数据,如果str不在strlist 或strlist 为空字符串,则返回值为 0 。

③group_concat(),官方:该函数返回带有来自一个组的连接的非NULL值的字符串结果。

 

posted @ 2022-12-01 16:06  教练我想打篮球  阅读(786)  评论(0编辑  收藏  举报