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

MySQL에서 모든 행의 값을 쉼표로 구분된 단일 행으로 표시하는 방법

GROUP_CONCAT() 함수로 여러 행을 한 줄로 합치기

MySQL에서 여러 행에 흩어져 있는 값들을 하나의 행으로 가져오고, 각 값을 쉼표(,)로 구분하여 표시하려면 GROUP_CONCAT() 함수를 사용하면 됩니다.

이 경우 GROUP BY 절을 사용할 필요가 없습니다. GROUP_CONCAT() 자체가 더 간결하고 빠른 해결책이기 때문입니다.

1. 테이블 생성하기

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

mysql> create table DemoTable1371
    -> (
    -> Id int,
    -> CountryName varchar(40)
    -> );
Query OK, 0 rows affected (0.89 sec)

2. 데이터 삽입하기

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

mysql> insert into DemoTable1371 values(100,'US');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable1371 values(100,'UK');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable1371 values(101,'AUS');
Query OK, 1 row affected (0.27 sec)
mysql> insert into DemoTable1371 values(101,'Angola');
Query OK, 1 row affected (0.14 sec)

3. 전체 레코드 확인하기

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

mysql> select * from DemoTable1371;

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

+------+-------------+
| Id   | CountryName |
+------+-------------+
|  100 | US          |
|  100 | UK          |
|  101 | AUS         |
|  101 | Angola      |
+------+-------------+
4 rows in set (0.00 sec)

4. GROUP_CONCAT()으로 하나의 행으로 합치기

모든 행의 값을 가져와 쉼표로 구분된 단일 행으로 표시하는 쿼리는 다음과 같습니다.

mysql> select group_concat(CountryName separator ',') from DemoTable1371;

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

+-----------------------------------------+
| group_concat(CountryName separator ',') |
+-----------------------------------------+
| US,UK,AUS,Angola                        |
+-----------------------------------------+
1 row in set (0.00 sec)

정리

GROUP_CONCAT() 함수는 여러 행의 문자열 값을 하나의 문자열로 결합할 때 매우 유용합니다. 기본 구분자는 쉼표이며, SEPARATOR 옵션을 사용하면 원하는 구분자를 지정할 수도 있습니다. 또한 DISTINCT, ORDER BY 등의 옵션과 함께 활용하면 중복 제거나 정렬된 결과를 얻을 수 있어 실무에서 다양하게 응용됩니다.