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

MySQL에서 CONCAT과 GROUP_CONCAT을 함께 사용하는 방법

MySQL에서는 GROUP_CONCAT 함수 내부에 CONCAT 함수를 조합하여 여러 레코드의 값을 하나의 문자열로 깔끔하게 연결할 수 있습니다. 이번 글에서는 예제 테이블을 만들고, 두 함수를 함께 사용하는 방법을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table GroupConcatenateDemo
-> (
-> id int,
-> FirstName varchar(100),
-> Score int
-> );
Query OK, 0 rows affected (0.61 sec)

2. 레코드 삽입하기

이제 테이블에 몇 개의 레코드를 삽입해 보겠습니다.

mysql> insert into GroupConcatenateDemo values(1,'John',94);
Query OK, 1 row affected (0.16 sec)

mysql> insert into GroupConcatenateDemo values(2,'Bob',98);
Query OK, 1 row affected (0.16 sec)

mysql> insert into GroupConcatenateDemo values(4,'Carol',100);
Query OK, 1 row affected (0.20 sec)

테이블에 저장된 레코드를 확인하려면 다음 쿼리를 실행합니다.

mysql> select *from GroupConcatenateDemo;

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

+------+-----------+-------+
| id | FirstName | Score |
+------+-----------+-------+
| 1 | John | 94 |
| 2 | Bob | 98 |
| 3 | Carol | 100 |
+------+-----------+-------+
3 rows in set (0.00 sec)

3. GROUP_CONCAT 기본 문법

레코드를 연결할 때 사용하는 기본 문법은 다음과 같습니다.

Select column_name1,
group_concat(concat(`Column_name2`,'separatorValue',`Column_name3`) separator 'separatorValue')
as AliasName from yourTableName group by column_name1;

여기서 concat()은 각 행 내부의 여러 컬럼 값을 하나로 합치고, group_concat()은 그룹으로 묶인 여러 행의 결과를 지정한 구분자(separator)로 이어 붙입니다.

4. 실제 적용 예제

다음은 이름(FirstName)과 점수(Score)를 콜론(:)으로 연결하고, 각 결과를 쉼표(,)로 구분하여 조회하는 예제입니다.

mysql> SELECT
-> id,group_concat(concat(`FirstName`,':',`score`) separator ',')
-> as FirstNameAndScore from GroupConcatenateDemo group by id;

아래 출력 결과를 보면 레코드가 성공적으로 연결된 것을 확인할 수 있습니다.

+------+-------------------+
| id | FirstNameAndScore |
+------+-------------------+
| 1 | John:94 |
| 2 | Bob:98 |
| 3 | Carol:100 |
+------+-------------------+
3 rows in set (0.00 sec)

정리

이처럼 CONCATGROUP_CONCAT을 함께 사용하면 행 단위로 값을 합친 뒤, 그룹 단위로 하나의 문자열로 만들 수 있습니다. 구분자를 자유롭게 지정할 수 있어 CSV 형태의 데이터 추출이나 목록형 조회 결과를 만들 때 매우 유용합니다.