>데이터 베이스 >MySQL 튜토리얼 >ID를 기반으로 여러 레이블을 단일 행으로 연결하는 방법은 무엇입니까?

ID를 기반으로 여러 레이블을 단일 행으로 연결하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-30 21:52:10815검색

How to Concatenate Multiple Labels into a Single Row Based on ID?

ID를 기준으로 값 연결

이 질문은 ID당 여러 행과 단일 '레이블' 열이 있는 테이블을 ID당 하나의 행과 연결된 '라벨' 열이 있는 테이블입니다. 각 레이블은 쉼표로 구분되어야 합니다.

제공된 데이터는 다음 관찰로 구성됩니다.

Response_ID Label
12147 It was not clear
12458 Did not Undersstand
12458 Was not resolved
12458 Did not communicate
12586 Spoke too fast
12587 Too slow

원하는 출력은 다음과 같습니다.

Response_ID Label
12147 It was not clear
12458 Did not Undersstand,Was not resolved,Did not communicate
12586 Spoke too fast
12587 Too Slow

이 변환을 달성하려면 , 다음 코드 조각을 사용할 수 있습니다:

declare @T table(Response_ID int, Label varchar(50))
insert into @T values
(12147,          'It was not clear'),
(12458,          'Did not Undersstand'),
(12458,          'Was not resolved'),
(12458,          'Did not communicate'),
(12586,          'Spoke too fast'),
(12587,          'Too slow')

select T1.Response_ID,
       stuff((select ','+T2.Label
              from @T as T2
              where T1.Response_ID = T2.Response_ID
              for xml path(''), type).value('.', 'varchar(max)'), 1, 1, '') as Label
from @T as T1
group by T1.Response_ID

'stuff' 함수의 하위 쿼리 ' ' 연산자와 XML 메소드를 통한 연결을 사용하여 레이블 조합을 처리합니다. 'type' 매개변수의 'value' 함수는 XML 출력을 varchar(max) 유형으로 변환하여 연결된 결과가 올바르게 표시되도록 합니다.

하위 쿼리에 order by 문이 없으면 연결된 순서가 문자열은 보장되지 않습니다.

위 내용은 ID를 기반으로 여러 레이블을 단일 행으로 연결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.