函数使用说明:该函数返回带有来自一个组的连接的非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 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; 但有语法错误,如图所示,暂时无法解决
(责任编辑:最模板) |