У меня есть похожий вопрос Как использовать 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
колонка.
Спасибо.
Вы можете попробовать этот запрос:
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
)
Вы можете присоединиться к 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