GROUP_CONCAT이란?
MySQL의 group_concat 함수는 그룹화된 데이터를 하나로 합쳐서 조회할 수 있는 그룹 함수입니다.
MySQL :: MySQL 8.4 Reference Manual :: 14.19.1 Aggregate Function Descriptions
MySQL 8.4 Reference Manual / ... / Functions and Operators / Aggregate Functions / Aggregate Function Descriptions 14.19.1 Aggregate Function Descriptions This section describes aggregate functions that operate on sets of values. They are
dev.mysql.com
GROUP_CONCAT 기본 사용법
다음과 같이 사용할 수 있습니다.
SELECT <그룹화할 컬럼>, GROUP_CONCAT(<합쳐서 보여줄 컬럼>)
FROM <테이블명>
GROUP BY <그룹화할 컬럼>
예제의 쿼리는 도시 테이블 데이터를 나라별로 그룹화하여 나라별로 어떤 도시가 있는지 GROUP_CONCAT을 사용해서 표현한 쿼리입니다.
GROUP_CONCAT을 사용하면 지정한 컬럼의 데이터를 쉼표로 합쳐서 보여줍니다.
GROUP_CONCAT 예제
여러 컬럼 사용
GROUP_CONCAT에는 컬럼 여러개를 사용할 수 있습니다.
SELECT <그룹화할 컬럼>, GROUP_CONCAT(<컬럼1>, <컬럼2> ...)
FROM <테이블명>
GROUP BY <그룹화할 컬럼>
GROUP_CONCAT에 여러 컬럼을 적용하면 컬럼 값이 모두 붙어서 나옵니다.
구분자 변경
쉼표 말고 다른 구분자를 사용하고 싶을 때는 다음과 같이 사용합니다.
SELECT <그룹화할 컬럼>, GROUP_CONCAT(<합쳐서 보여줄 컬럼> separator '<구분자>')
FROM <테이블명>
GROUP BY <그룹화할 컬럼>
조건 적용
GROUP_CONCAT 결과에 조건을 적용하고싶으면 IF 문같은 조건문을 사용하면 됩니다.
예제의 쿼리는 인구가 100만을 넘는 도시만 보여주는 쿼리입니다.
중복 제거
GROUP_CONCAT은 해당 그룹에 어떤 데이터가 있는지 그대로 보여줍니다.
만약 중복 제거를 하고싶다면 distinct를 추가하면 됩니다.
정렬 sort
group_concat의 데이터를 정렬하고 싶을 때는 다음과 같이 사용합니다.
SELECT <그룹화할 컬럼>, GROUP_CONCAT(<합쳐서 보여줄 컬럼> order by <정렬 기준 컬럼>)
FROM <테이블명>
GROUP BY <그룹화할 컬럼>