美文网首页
MySQL把多个字段合并成一条记录的方法(GROUP_CONCA

MySQL把多个字段合并成一条记录的方法(GROUP_CONCA

作者: 外匹夫 | 来源:发表于2018-01-05 16:19 被阅读0次

    https://www.cnblogs.com/appleat/archive/2012/09/03/2669033.html

    429d928ff8e6dd255b815783481679c.png
    7f992e6767dbb4d6a44047bfc045586.png
    这个结果显然不对,结果应该是1、2条合并成一天,但是有projectFavorite(中间表)影响,查了下用GROUP_CONCAT
    GROUP_CONCAT函数返回一个字符串结果,该结果由分组中的值连接组合而成。
    使用表info作为示例,其中语句SELECT locus,id,journal FROM info WHERE locus IN('AB086827','AF040764');的返回结果为
    图片.png
    1、使用语法及特点:
    GROUP_CONCAT([DISTINCT] expr [,expr ...]
    [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col ...]]
    [SEPARATOR str_val])
    在 MySQL 中,你可以得到表达式结合体的连结值。通过使用 DISTINCT 可以排除重复值。如果希望对结果中的值进行排序,可以使用 ORDER BY 子句。
    SEPARATOR 是一个字符串值,它被用于插入到结果值中。缺省为一个逗号 (","),可以通过指定 SEPARATOR "" 完全地移除这个分隔符。
    可以通过变量 group_concat_max_len 设置一个最大的长度。在运行时执行的句法如下: SET [SESSION | GLOBAL] group_concat_max_len = unsigned_integer;
    如果最大长度被设置,结果值被剪切到这个最大长度。如果分组的字符过长,可以对系统参数进行设置:SET @@global.group_concat_max_len=40000;

    2、使用示例:
    语句 SELECT locus,GROUP_CONCAT(id) FROM info WHERE locus IN('AB086827','AF040764') GROUP BY locus; 的返回结果为


    图片.png

    语句 SELECT locus,GROUP_CONCAT(distinct id ORDER BY id DESC SEPARATOR '_') FROM info WHERE locus IN('AB086827','AF040764') GROUP BY locus;的返回结果为


    图片.png
    语句SELECT locus,GROUP_CONCAT(concat_ws(', ',id,journal) ORDER BY id DESC SEPARATOR '. ') FROM info WHERE locus IN('AB086827','AF040764') GROUP BY locus;的返回结果为
    图片.png

    那接下来该解决我的问题

    SELECT  p.id AS pId,p.projectName,p.createUser projectCreateUser,GROUP_CONCAT(pf.userId) AS projectFavorite,t.* FROM project p 
    LEFT JOIN projectUser pu ON pu.projectId=p.id 
    LEFT JOIN projectFavorite pf ON pf.projectId=p.id
    LEFT JOIN task t ON t.projectId = p.id 
    LEFT JOIN taskUser tu ON tu.userId=pu.userId AND tu.taskId=t.id
    WHERE t.state!=1 AND p.shopId=10593 AND p.projectState=0 AND pu.userId=4 AND ( t.parentId=0 OR t.parentId IS NULL ) 
     AND tu.userId=4 GROUP BY p.id,t.id ORDER BY p.createDate DESC , t.id DESC 
    
    图片.png

    相关文章

      网友评论

          本文标题:MySQL把多个字段合并成一条记录的方法(GROUP_CONCA

          本文链接:https://www.haomeiwen.com/subject/kjdsnxtx.html