服务报价 | 域名主机 | 网络营销 | 软件工具| [加入收藏]
 热线电话: #
当前位置: 主页 > php教程 > php教程 >

group_concat mysql 把结果集中的一列数据用指定分隔符转换成一行

时间:2016-01-05 11:46来源:未知 作者:最模板 点击:
函数使用说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果。其完整的语法如下 GROUP_CONCAT( [ DISTINCT ] expr [ ,expr ... ] [ ORDER BY {unsigned_integer | col_name | expr } [ASC | DESC ] [ ,col

函数使用说明:该函数返回带有来自一个组的连接的非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)
0%
------分隔线----------------------------
栏目列表
热点内容