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 옵션으로 구분자를 지정할 수 있어 보고서용 요약 데이터나 목록형 출력 등 다양한 상황에서 유용하게 사용됩니다.