[MySQL] GROUP_CONCAT()

2021. 1. 14. 17:42MySQL

GROUP_CONCAT

  • 구분자를 활용한 문자열 묶음을 해주는 함수이다.
  • GROUP BY로 된 레코드들 중에서 구분자를 이용하여 해당하는 문자열을 보고자 할 때 사용한다.
  • 기본적으로 GROUP BY를 하게되면 여러개의 레코드가 합쳐져도 문자열은 하나만 보이게 된다.
  • GROUP_CONCAT(컬럼명)을 하면 각 레코드안에 있는 모든 문자열들이 뒤따라 보이게 된다. 

 

<예시1 - GROUP BY 미사용, GROUP_CONCAT 미사용>

SELECT A.id, a.title, T.body
FROM article AS A
LEFT JOIN tag AS T
ON a.id = T.relId
AND T.relTypeCode = 'article'

결과 : id가 2인 article의 tag의 body에는 DB, INSERT, SQL이 한개씩 들어있다.


<예시2 - GROUP BY 사용, GROUP_CONCAT 미사용>

SELECT A.id, a.title, T.body
FROM article AS A
LEFT JOIN tag AS T
ON A.id = T.relId
AND T.relTypeCode = 'article'
GROUP BY A.id

결과 : id가 2인 article의 tag의 body에는 INSERT, SQL가 보이지 않게되고 DB만 보인다.


<예시3 - GROUP BY 사용, GROUP_CONCAT 사용>

SELECT A.id, A.title, 
GROUP_CONCAT(T.body) AS Tags
FROM article AS A
LEFT JOIN tag AS T
ON A.id = T.relId
AND T.relTypeCode = 'article'
GROUP BY A.id

결과 : id가 2인 article의 tag의 body에 들어있는 DB, INSERT, SQL가 구분자 ','를 통해 구분되어 나열된다.