imhamburger 님의 블로그

Mysql - CONCAT과 GROUP_CONCAT 본문

Mysql

Mysql - CONCAT과 GROUP_CONCAT

imhamburger 2026. 1. 14. 15:44

CONCAT과 GROUP_CONCAT은 둘다 문자열을 합칠 때 사용한다.

그렇지만 사용 목적과 동작 단위가 근본적으로 다르다.

단순 비교 대상이라기보다는 “행 단위 vs 집계 단위” 함수로 구분해야 한다.

 

CONCAT: 행 단위 문자열 결합

SELECT
  CONCAT(first_name, ' ', last_name) AS full_name
FROM users;
first_name last_name full_name
Burger Ham Burger Ham

 

GROUP_CONCAT: 여러 행을 하나의 문자열로 집계

SELECT
  user_id,
  GROUP_CONCAT(product_name) AS products
FROM orders
GROUP BY user_id;
user_id products
1 Apple,Banana,Orange

 

근데 만약에 

중복된 문자열이 있다면??

user_id products
1 Apple,Banana,Orange,Orange

 

다음과 같이 쓸 수 있다.

SELECT
  user_id,
  GROUP_CONCAT(DISTINCT product_name) AS products
FROM orders
GROUP BY user_id;

 

아래와 같이 응용해서 쓸 수 있다.

SELECT user_id,
        GROUP_CONCAT(DISTINCT products ORDER BY products SEPARATOR '-') AS products
FROM orders
GROUP BY user_id;
user_id products
1 Apple-Banana-Orange