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

MySQL에서 GROUP_CONCAT()으로 열 값을 CSV 형식으로 표시하는 방법

MySQL에서 여러 행의 열 값을 쉼표로 구분된 CSV(Comma-Separated Values) 형식으로 한 줄에 표시하고 싶다면 GROUP_CONCAT() 함수를 사용하면 됩니다. 이 함수는 그룹 내의 문자열 값들을 연결하여 하나의 문자열로 반환합니다.

1. 테이블 생성하기

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

mysql> create table DemoTable786 (
    StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName varchar(100)
)
AUTO_INCREMENT=101;
Query OK, 0 rows affected (0.70 sec)

2. 데이터 삽입하기

INSERT 명령을 사용하여 테이블에 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable786(StudentName) values('Chris');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable786(StudentName) values('Robert');
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable786(StudentName) values('Mike');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable786(StudentName) values('Sam');
Query OK, 1 row affected (0.12 sec)

3. 전체 레코드 조회하기

SELECT 문을 사용하여 테이블의 모든 레코드를 확인해 보겠습니다.

mysql> select *from DemoTable786;

위 쿼리는 다음과 같은 결과를 출력합니다.

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 101       | Chris       |
| 102       | Robert      |
| 103       | Mike        |
| 104       | Sam         |
+-----------+-------------+
4 rows in set (0.00 sec)

4. GROUP_CONCAT()으로 CSV 형식으로 변환하기

다음은 MySQL에서 열 값들을 CSV 형식으로 선택하는 쿼리입니다.

mysql> select group_concat(StudentId),group_concat(StudentName) from DemoTable786;

실행 결과는 아래와 같습니다.

+-------------------------+---------------------------+
| group_concat(StudentId) | group_concat(StudentName) |
+-------------------------+---------------------------+
| 101,102,103,104         | Chris,Robert,Mike,Sam     |
+-------------------------+---------------------------+
1 row in set (0.00 sec)

추가 팁

GROUP_CONCAT()은 기본적으로 쉼표(,)로 값을 구분하지만, SEPARATOR 옵션을 사용하면 원하는 구분자를 지정할 수 있습니다. 또한 ORDER BY 절을 함께 사용하면 연결되는 값들의 순서를 정렬할 수도 있습니다.

mysql> select group_concat(StudentName order by StudentName desc separator ' | ') from DemoTable786;

참고로 GROUP_CONCAT()에는 기본적으로 최대 길이 제한(group_concat_max_len, 기본값 1024바이트)이 있으므로, 대량의 데이터를 처리할 때는 이 설정값을 조정해야 할 수 있습니다.