MariaDB SQL
GROUP_CONCAT ()으로 여러 행의 문자열을 합칠 수 있다.
Hwarang.pop
2023. 2. 28. 20:41
728x90
320x100
GROUP_CONCAT([DISTINCT] [컬럼][ORDER BY 컬럼 ASC/DESC][SEPAPATOR '구분자'])
USER_ADDR | ||
IDX | REGION | NAME |
1 | 서울 | AAA |
2 | 인천 | CCC |
3 | 인천 | DDD |
4 | 천안 | BBB |
5 | 인천 | DDD |
기본적으로는 구분자 등을 생략하고 사용한다.
GROUP_CONCAT(컬럼명) : 문자열사이에 구분자는 쉼표(,)가 기본으로 들어간다.
위의 테이블(USER_ADDR)에서 지역(REGION)별 이름(NAME)을 나타내고 싶을 때는
SELECT REGION, GROUP_CONCAT(NAME) AS NAMES
FROM USER_ADDR
GROUP BY REGION ;
[실행결과]
USER_ADDR REGION NAMES 서울 AAA 인천 CCC,DDD,DDD 천안 BBB
구분자를 쉼표(,)가 아닌 다른 것으로 바꾸고 싶을 때는 SEPAPATOR '구분자' 를 사용한다.
GROUP_CONCAT(컬럼명 SEPAPATOR ' / ' ) : ' / ' 가 구분자로 표시된다.
위의 테이블(USER_ADDR)에서 지역(REGION)별 이름(NAME)을 나타내고 구분자는 ' / ' 로 하려면
SELECT REGION, GROUP_CONCAT(NAME SEPAPATOR ' / ') AS NAMES
FROM USER_ADDR
GROUP BY REGION ;
[실행결과]
USER_ADDR REGION NAMES 서울 AAA 인천 CCC / DDD / DDD 천안 BBB
합쳐지는 문자열에 중복된 문자를 지우고 싶을 때는 DISTINCT 를 사용한다.
GROUP_CONCAT(DISTINCT 컬럼명)
위의 테이블(USER_ADDR)에서 지역(REGION)별 이름(NAME)을 나타내고 중복된 문자열은 제거하고 싶을 때는
SELECT REGION, GROUP_CONCAT(DISTINCT NAME SEPAPATOR ' / ') AS NAMES
FROM USER_ADDR
GROUP BY REGION ;
[실행결과]
USER_ADDR REGION NAMES 서울 AAA 인천 CCC / DDD 천안 BBB
합쳐지는 문자열에 중복된 문자를 ORDER BY를 사용해 순서를 정렬할 수 있다.
GROUP_CONCAT(컬럼명 ORDER BY 컬럼 ASC/DESC)
위의 테이블(USER_ADDR)에서 지역(REGION)별 이름(NAME)을 나타내고 이름은 역방향 정렬을 사용하고 싶을 때는
SELECT
REGION,
GROUP_CONCAT(DISTINCT NAME ORDER BY NAME DESC SEPAPATOR ' / ') AS NAMES
FROM USER_ADDR
GROUP BY REGION ;
[실행결과]
USER_ADDR REGION NAMES 서울 AAA 인천 DDD / CCC 천안 BBB
728x90
반응형