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;

但有语法错误,如图所示,暂时无法解决

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值