Как объединить строки в новый столбец на основе GROUP BY

У меня есть похожий вопрос Как использовать GROUP BY для объединения строк в 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 колонка.

Спасибо.

0

Решение

Вы можете попробовать этот запрос:

UPDATE my_table t
SET aggr = (
SELECT * FROM (
SELECT CONCAT(GROUP_CONCAT(t2.string SEPARATOR '|'), '|')
FROM my_table t2
WHERE t2.id = t.id
) AS X
)
2

Другие решения

Вы можете присоединиться к 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
1