본문 바로가기
Computer Science/백엔드

GROUP_CONCAT() : GROUP BY 할 때, 한 Column의 값을 한 번에 묶고 싶을 때!

by pixel__ 2021. 9. 14.

GROUP BY를 할 때, 한 Column의 값을 한번에 표시해서 보고 싶을 때가 있다.

이럴 때, GROUP_CONCAT()을 쓰면 상당히 편리하게 쓸 수 있다.

 

SELECT column1 GROUP_CONCAT(column2) FROM table1 GROUP BY column1
column1 column2
aa a, b, c, c, c
bb k, s, w, c, a, k

 

그런데 이렇게 하면 중복된 값이라도 있는 값 그대로 연속으로 표시하게 된다. 이를 방지하기 위해선 아래와 같이 하면 된다.

SELECT column1 GROUP_CONCAT(distinct column2) FROM table1 GROUP BY column1
column1 column2
aa a, b, c
bb k, s, w, c, a

 

이 때, a가 아닌 것만 표시하고 싶으면 어떻게 해야할까? GROUP_CONCAT에서 다행히 NULL은 없는 값으로 취급하므로, 아래와 같이 IF문을 응용하면 쉽게 표시할 수 있다.

SELECT column1 GROUP_CONCAT(distinct IF(column2<>"a", column2, NULL)) FROM table1 GROUP BY column1
column1 column2
aa b, c
bb k, s, w, c