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 |
'Computer Science > 백엔드' 카테고리의 다른 글
Django vs Node.js (0) | 2021.11.22 |
---|---|
[MySQL] 테이블 특정 문자열을 찾아 바꾸기 (0) | 2021.07.27 |
[MySQL] csv 파일을 MySQL 테이블로 불러오기 (0) | 2021.07.26 |
[MySQL] 반복문(LOOP)으로 Column 1, 2, ..., 100 생성 (0) | 2021.07.26 |