*Mysql을 예시로 한 포스팅입니다.
GROUP_CONCAT을 이용한 컬럼 합치기
상황에 따라서 GROUP BY 이용 시 특정 컬럼 값을 합쳐야 하는 경우가 있다. 예를 들어 한 사용자가 가질 수 있는 자동차의 대수가 여러 대 일 경우 하나의 데이터 셋한 줄로 가져오고 싶은 경우 GROUO_CONCAT을 활용하여
, 나 원하는 구분자로 문자열로 묶어 반환 할 수 있다.
물론 (JPA)[https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#reference]를 쓰는 사용자들은
SQL문으로 처리하지 않겠지만 나와 같은 사람들을 위하여 블로그 포스팅한다.
GROUP_BY, GROUP_CONCAT 활용
만약에 아래와 같은 데이터셋에 사용자를 묶어 자동차를 ,로 구분 한 문자열로 처리할 경우다.
USER | CAR |
KIM | K5 |
LEE | TUCAN |
KIM | K7 |
LEE | GRANDEUR |
SELECT USER,
GROUP_CONCAT(CAR) AS CAR
FROM USER_CAR
GROUP BY USER
위와 같이 GROUP BY를 통해 묶고 GROUP_CONCAT을 사용하여 CAR의 종류를 ,로 합친 문자열을 반환하게 된다.
USER | CAR |
KIM | K5,K7 |
LEE | TUCAN,GRANDEUR |
만약 다른 구분자를 활용하고 싶다면 아래와 같이 SQL문을 변경하여 GROUP_CONCAT에 구분자를 설정하여 준다.
SELECT USER,
GROUP_CONCAT(CAR separator '|') AS CAR
FROM USER_CAR
GROUP BY USER
USER | CAR |
KIM | K5|K7 |
LEE | TUCAN|GRANDEUR |
필요에 따라 적적하게 사용한다면 좋은 유익한 Database 함수일 것 같다.
'Develop > Database' 카테고리의 다른 글
[Develop/Database] CentOS MariaDB 10.3 이상 설치 및 업그레이드 (0) | 2020.06.08 |
---|---|
[Develop/Database] Linux MySQL commandLine에서 SQL파일 실행 (0) | 2020.06.02 |
[Develop/Database]DELETE와 TRUNCATE 차이 (0) | 2019.12.17 |
[Develop/Database] MariaDB user 생성, 삭제, 권한 관리 (0) | 2019.11.18 |
[Develop/Database] MariaDB 10.4버전 이후 root 패스워드 변경 (0) | 2019.11.13 |