Вообще говоря, лучше отформатировать вывод в прикладном слое. Представьте, что в вашей таблице 728003 уникальных значения в столбце «имя». Ваш результат будет необычайно широким.
Однако, если вы действительно хотите это сделать и у вас есть объединяющий столбец для группировки, вы можете сделать:
SELECT unifying_column, GROUP_CONCAT(DISTINCT name) FROM test
GROUP BY unifying_column;
пс, group_concat
может содержать только ограниченное количество символов
Добавление
Единственный способ сделать это с несколькими столбцами - это что-то вроде этого (а - это ужасный удар):
SELECT SUBSTRING_INDEX(nlist,',',1) AS col1,
SUBSTRING_INDEX(SUBSTRING_INDEX(nlist,',',2),',',-1) AS col2,
SUBSTRING_INDEX(SUBSTRING_INDEX(nlist,',',3),',',-1) AS col3,
SUBSTRING_INDEX(SUBSTRING_INDEX(nlist,',',4),',',-1) AS col4,
SUBSTRING_INDEX(SUBSTRING_INDEX(nlist,',',5),',',-1) AS col5,
SUBSTRING_INDEX(SUBSTRING_INDEX(nlist,',',6),',',-1) AS col6,
SUBSTRING_INDEX(SUBSTRING_INDEX(nlist,',',7),',',-1) AS col7,
SUBSTRING_INDEX(SUBSTRING_INDEX(nlist,',',8),',',-1) AS col8,
SUBSTRING_INDEX(SUBSTRING_INDEX(nlist,',',9),',',-1) AS col9,
SUBSTRING_INDEX(nlist,',',-1) AS col10
FROM
(SELECT unifying_column, GROUP_CONCAT(DISTINCT name LIMIT 10) AS nlist FROM test
GROUP BY unifying_column) AS subtable;
Вышеуказанное не проверено и может содержать синтаксические ошибки. Я также не уверен, что это могло бы сделать с дополнительными столбцами, если есть менее 10 имен.