>데이터 베이스 >MySQL 튜토리얼 >MySQL에서 복잡한 데이터 집계를 위해 GROUP_CONCAT과 CONCAT를 결합하는 방법은 무엇입니까?

MySQL에서 복잡한 데이터 집계를 위해 GROUP_CONCAT과 CONCAT를 결합하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-17 21:11:11863검색

How to Combine GROUP_CONCAT and CONCAT for Complex Data Aggregation in MySQL?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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