SQL Объединить несколько строк в один столбец и получить имя из идентификаторов
Рассмотрим таблицу базы данных connectouser
держа два идентификатора:
connectouser
compID coopID
1 1
1 2
1 3
2 1
2 2
Рассмотрим другую таблицу базы данных coop
держа два идентификатора:
coop
ID Name
1 ABC
2 DEF
3 GHJ
Я хочу следующий вывод:
Result
compID coopname
1 ABC,DEF,GHJ
2 ABC,DEF
Может кто-нибудь, пожалуйста, помогите мне в этом.
1 ответ
Вопрос был помечен MySQL для этого ответа.
Это группа и group_concat()
:
select cu.compId, group_concat(co.name order by co.id) as coopnames
from connectouser cu join
coop co
on cu.coopID = co.ID
group by cu.compId;
В SQL Server вы можете сделать:
select cu.compId,
stuff( (select ',' + co.name
from coop co
where cu.coopID = co.ID
order by co.id
for xml path ('')
), 1, 1, ''
) as names
from connectouser cu;
Самая последняя версия SQL Server поддерживает string_agg()
, который является гораздо лучшим подходом.