Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 여러 행의 결과를 한 줄로 표시하는 방법 (GROUP_CONCAT 활용)

MySQL에서 결과를 한 줄로 표시하는 방법

여러 행에 흩어져 있는 데이터를 하나의 줄로 합쳐서 조회하고 싶다면 GROUP_CONCAT() 함수를 사용하면 됩니다. 이 함수는 지정한 컬럼의 값들을 하나의 문자열로 연결해 반환하며, 정렬 순서와 구분자도 자유롭게 설정할 수 있습니다.

먼저 예제에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable1507
    -> (
    -> Name varchar(20),
    -> PaperSet int
    -> );
Query OK, 0 rows affected (0.68 sec)

1. 샘플 데이터 삽입

INSERT 문을 사용해 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable1507 values('Chris',111);
Query OK, 1 row affected (0.37 sec)
mysql> insert into DemoTable1507 values('David',112);
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable1507 values('Mike',111);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable1507 values('Bob',113);
Query OK, 1 row affected (0.14 sec)

2. 전체 데이터 확인

SELECT 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select * from DemoTable1507;

실행 결과는 다음과 같습니다.

+-------+----------+
| Name  | PaperSet |
+-------+----------+
| Chris |      111 |
| David |      112 |
| Mike  |      111 |
| Bob   |      113 |
+-------+----------+
4 rows in set (0.00 sec)

3. GROUP_CONCAT으로 한 줄로 출력하기

아래 쿼리는 PaperSet이 111인 사람들의 이름을 내림차순으로 정렬하고, 콜론(:)을 구분자로 사용해 한 줄로 출력합니다.

mysql> select group_concat(Name order by Name desc separator ':')
    -> from DemoTable1507
    -> where PaperSet=111;

실행 결과는 다음과 같습니다.

+-----------------------------------------------------+
| group_concat(Name order by Name desc separator ':') |
+-----------------------------------------------------+
| Mike:Chris                                           |
+-----------------------------------------------------+
1 row in set (0.00 sec)

이처럼 GROUP_CONCAT() 함수를 활용하면 여러 행의 값을 원하는 구분자로 연결해 단일 행으로 깔끔하게 표시할 수 있습니다. ORDER BY 절로 정렬 기준을, SEPARATOR 옵션으로 구분자를 지정할 수 있어 보고서용 요약 데이터나 목록형 출력 등 다양한 상황에서 유용하게 사용됩니다.