#sql #mariadb
Вопрос:
Как объединить столбцы с сохранением значений результатов?
select user_poi_no, tm.id, modelName, item, projectName
from tb_user_poi p
inner join tb_member tm on p.id_pk = tm.id_pk
inner join tb_poi tp on p.poiNo = tp.poiNo
inner join tb_model t on tp.modelNo = t.modelNo
where tm.id_pk = 1;
Результатом приведенного выше sql является:
user_poi_no, id, modelname, item, projectname
1, q, drawing 3, 1, basic project
7, q, drawing 3, 2, project name test
8, q, drawing 3, 2, project name test
9, q, drawing 3, 2, project name test
Но то, что я хочу, — это результат ниже.
user_poi_no, id, modelname, item, projectname
1, q, drawing 3, 1, basic project
7 8 9, q, drawing 3, 2, project name test
Я попытался решить проблему с помощью distinct или group by, но столкнулся с проблемой, что 4 столбца user_poi_no, id, modelname, item, projectname
не поддерживаются.
Как я могу получить желаемые результаты?
с уважением
Ответ №1:
Вы можете использовать group_concat
для этого
select group_concat(user_poi_no order by user_poi_no),
tm.id,
modelName,
group_concat(item order by item),
projectName
from tb_user_poi p
inner join tb_member tm on p.id_pk = tm.id_pk
inner join tb_poi tp on p.poiNo = tp.poiNo
inner join tb_model t on tp.modelNo = t.modelNo
where tm.id_pk = 1
group by tm.id, modelName, projectName