MySQL의 CONCAT에서 GROUP_CONCAT을 사용하는 방법
특정 시나리오에서는 MySQL 테이블에 저장된 데이터를 변환해야 할 수도 있습니다. 특정 형식으로. 예를 들어 다음과 같은 데이터가 포함된 테이블이 있다고 가정합니다.
id | Name | Value |
---|---|---|
1 | A | 4 |
1 | A | 5 |
1 | B | 8 |
2 | C | 9 |
목표는 다음 결과를 얻는 것입니다.
id | Column |
---|---|
1 | A:4,5,B:8 |
2 | C:9 |
이 변환을 달성하려면 다음을 수행해야 합니다. GROUP_CONCAT() 함수를 활용하세요. 이 함수는 특정 기준에 따라 그룹화된 여러 행의 값을 연결하는 기능이 뛰어납니다.
시작하려면 ID와 이름으로 그룹화된 값을 연결하는 하위 쿼리를 생성해야 합니다. 다음 코드 조각은 이 단계를 보여줍니다.
select id, concat(`Name`, ':', group_concat(`Value` separator ',')) as Name from mytbl group by id, Name
결과 하위 쿼리는 콜론과 쉼표로 연결되고 id와 Name으로 그룹화된 모든 값을 포함하는 Name이라는 새 열을 생성합니다.
| id | Name | | --- | ---- | | 1 | A:4,5 | | 1 | B:8 | | 2 | C:9 |
마지막으로 가장 바깥쪽 쿼리에 GROUP_CONCAT()를 다시 적용합니다. 이번에는 id를 그룹화 기준으로 사용합니다. 이 단계에서는 하위 쿼리의 이름 값을 쉼표로 구분하여 연결합니다.
select id, group_concat(`Name` separator ',') as `ColumnName` from ( select id, concat(`Name`, ':', group_concat(`Value` separator ',')) as Name from mytbl group by id, Name ) tbl group by id;
결과는 정확히 원하는 대로입니다.
| id | Column | | --- | ----- | | 1 | A:4,5,B:8 |
위 내용은 MySQL에서 복잡한 데이터 집계를 위해 GROUP_CONCAT과 CONCAT를 결합하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!