mysql函数之五:group_concat mysql 把结果集中的一列数据用指定分隔符转换成一行
函数使用说明:该函数返回带有来自一个组的连接的非NULL 值的字符串结果。其完整的语法如下
GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr } [ASC | DESC] [,col_name ...]] [SEPARATOR str_val ])
例子:
SELECT uin FROM sys_user where uin<240;
结果:
# uin
'1'
'2'
'3'
'44'
'176'
'196'
'204'
'210'
'215'
'237'
'238'
SELECT group_concat(uin,'') FROM sys_user where uin<240;
结果:
示例3:
SELECT uin FROM sys_user where uin=2 or create_user_uin_tree like '%_2_%';
找到管理员及下级管理员所创建的角色:
SELECT * FROM sys_role where ( role_type=1 AND ain in(select uin FROM sys_user where create_user_uin_tree like '%_2_%') ) OR role_id=1;
或者:
SELECT * FROM sys_role where ( role_type=1 AND ain in(select group_concat(uin) FROM sys_user where create_user_uin_tree like '%_2_%') ) OR role_id=1;
但查不出结果来,为什么呢?
因为 group_concat(uin) 得到的结果被当作一个元素,而不是用逗号分隔的一系列value,如何才能得到我想要的效果呢
网络上有说用find_in_set()方法的,如下所示:
SELECT * FROM sys_role where ( role_type=1 AND find_in_set(ain,select group_concat(uin) FROM sys_user where create_user_uin_tree like '%_2_%') ) OR role_id=1;
但有语法错误,如图所示,暂时无法解决
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步