在做查询的时候遇到一个问题,今天分享一下解决方法。
先看一下我想要什么效果。
清单名称类型要点,后面两列为清单步骤(外键表)
但我并不想让主表的内容重复那么多遍,于是 distinct去重、子查询、左右内连接查询 各种试 都达不到效果。
有朋友跟我说了Oracle中的WM_CONCAT() 函数 可以将多数据合并为一列 ,在MySQL中试了下 没有这个函数 就搜了一下
然后这里介绍一下Mysql的多数据合并GROUP_CONCAT()函数
通过使用DISTINCT可以排除重复值;如果希望对结果中的值进行排序,可以使用ORDER BY子句
这里我就用不到排序了,就没有使用。感兴趣的可以自己试下
但是这里发现一个问题,合并后发现他是用逗号隔开的,而我的步骤名称里自己就有逗号句号之类的符号,这该怎么拆分呢?
就用到 SEPARATOR 关键字 它是一个字符串值,缺省为一个逗号。
这里 我们发现我并没有加SEPARATOR关键字,默认就是逗号了。找到原因就好办了,看一下效果
最后附上GROUP_CONCAT()语法
GROUP_CONCAT([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])