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

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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,802评论 18 399
  • 本文由谢小小分享社-5期转行群的一步一步走所写。引导语:生活不可能一帆风顺,要善待自己,不要活得太累,不要忙的太疲...
    谢小小分享社阅读 1,477评论 0 3
  • 本地配置 生成私钥和公钥 -t代表type加密算法的类型,-f代表file文件路径,-b代表bits位数然后它会提...
    sipt阅读 210评论 0 0
  • 第一百一十一回 1、鸳鸯见贾母死了,自己跟着老太太一辈子,往后的归宿也没个着落,贾赫虽远在海疆,可以暂时不被侵扰,...
    楚歌儿阅读 430评论 0 0
  • (一) 我在落地窗前看雨看花 看你回家的车子停在楼下 假装睡在沙发,等你吻落脸颊 (二) 原来我苦苦练下的毛笔字 ...
    小小七阅读 378评论 13 10