如何基于GROUP BY将字符串连接到新列

时间:2017-03-06 19:28:30

标签: php mysql string concatenation aggregate

我对How to use GROUP BY to concatenate strings in MySQL?提出了类似的问题,但是对于mytable表的这个例子

id    string    aggr
1          A    NULL
1          B    NULL
2          F    NULL

不同之处在于我需要更新表格以获得此结果:

id    string   aggr
1          A   A|B|
1          B   A|B|
5          C   C|E|C|
5          E   C|E|C|
5          C   C|E|C|
2          F   F|

结果相同的id我们有相同的newcolumn值。

在字符串的最后添加分隔符|绝对没问题。这样,我可以更快地计算newcolumn中有多少“项目”,而不添加+1,因为最后的缺席(仅在中间)。另外,当我将另一部分或两部分附加到aggr列时,我不会关心验证(如果我之前有管道)。

谢谢。

2 个答案:

答案 0 :(得分:2)

您可以尝试此查询:

swap()

答案 1 :(得分:1)

你可以在原始表

上加入group_concat
select a.id, a.string ,  b.aggr
from my_table a
inner join  (
  select id, group_concat(string SEPARATOR '|') as aggr
  from my_table 
  group by  id 
) b on a.id = b.id