집 >데이터 베이스 >MySQL 튜토리얼 >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 중국어 웹사이트의 기타 관련 기사를 참조하세요!