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
반응형
'MariaDB SQL' 카테고리의 다른 글
MAX vs MIN (최대 vs 최소) 함수를 알아보자 (0) | 2023.03.03 |
---|---|
CASE WHEN 을 사용하여 조건에 맞는 결과값을 나타내보자. (0) | 2023.03.02 |
CONCAT() 여러 문자들을 합칠 수 있다. (0) | 2023.02.27 |
ORDER BY 정렬에 대하여 (0) | 2023.02.22 |
ORDER BY FIELD()를 사용하여 특정한 값을 우선 정렬할 수 있다. (0) | 2023.02.21 |