2015-04-23 2 views
1

Привет У меня есть таблица, которая имеет значенияВставить в Выберите с группой CONCAT

domain     user    groups 
test_at_test.com   john    first 
test_at_test.com   mary    second 
test_at_test.com   john    second 

и т.д ..

Я хочу group concat эту таблицу и вставить значения в новую таблицу или update текущей таблицы я не имею проблемы с этим и имеют новую таблицу, чтобы быть как этот

domain    user    groups 
test_at_test.com   john    first,second 
test_at_test.com   mary    second 

я пишу следующее command но я получаюКоличествостолбцов не совпадает с количеством значений в строке 1 INSERT INTO newtable SELECT * , GROUP_CONCAT(groups) FROM table GROUP BY user ORDER BY domain

+0

Это звучит ужасно. почему ты хочешь сделать это? – Strawberry

+0

, потому что значения в первой таблице вставляются из запроса, и я не хочу, чтобы каждый пользователь несколько раз, потому что единственным изменением является группа. если есть способ, которым я могу сделать concat в inital insert, было бы лучше, но я не могу этого сделать. Я новичок в sql и php! –

+0

Как правило, это плохая идея хранить данные, которые можно легко вычислить «на лету» из уже существующих данных. – Strawberry

ответ

1

Ваш новый стол имеет 3 колонки, но в выберите набор результатов будет иметь 4 колонки необходимо указать столбцы в операторе отбора

INSERT INTO newtable 
SELECT `domain`, `user`, GROUP_CONCAT(groups) 
FROM table GROUP BY user 
ORDER BY domain 

DEMO

Примечание Результат усечен до максимальной длины, который задается системной переменной group_concat_max_len, которая имеет значение по умолчанию с 1024. Значение может быть установлено выше, хотя эффективный максимум длина возвращаемого значения ограничена значение max_allowed_packet.

+1

спасибо! вы спасли мне часы! –

Смежные вопросы