zoukankan      html  css  js  c++  java
  • 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;

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

  • 相关阅读:
    NOIP模拟 1
    wlan
    IS-IS IGP
    linux 基础 软件的安装 *****
    第五部分 linux 软件安装RPM SRPM与YUM
    第四部分 linux使用者管理
    添加rpmforge源 centos 7
    x86 保护模式 十 分页管理机制
    X86保护模式 八操作系统类指令
    poj2230 Watchcow【欧拉回路】【输出路径】(遍历所有边的两个方向)
  • 原文地址:https://www.cnblogs.com/duanxz/p/5098240.html
Copyright © 2011-2022 走看看