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

MySQL GROUP_CONCAT()로 성 열 그룹 연결하기 – 조건 설정으로 제한된 레코드만 표시하는 방법

MySQL에서 GROUP_CONCAT()로 그룹 연결과 조건 설정하기

MySQL에서 여러 행의 값을 하나의 문자열로 합치고 싶다면 GROUP_CONCAT() 함수를 사용하면 됩니다. 이 함수는 WHERE 절과 함께 사용하여 특정 조건에 맞는 레코드만 대상으로 그룹 연결을 수행할 수도 있습니다.

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

mysql> create table DemoTable813(
   UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   UserFirstName varchar(100),
   UserLastName varchar(100)
);
Query OK, 0 rows affected (0.49 sec)

샘플 데이터 삽입

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

mysql> insert into DemoTable813(UserFirstName,UserLastName) values('Adam','Smith');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable813(UserFirstName,UserLastName) values('Chris','Brown');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable813(UserFirstName,UserLastName) values('David','Miller');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable813(UserFirstName,UserLastName) values('Carol','Taylor');
Query OK, 1 row affected (0.22 sec)

전체 레코드 조회

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

mysql> select *from DemoTable813;

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

+--------+---------------+--------------+
| UserId | UserFirstName | UserLastName |
+--------+---------------+--------------+
|      1 | Adam          | Smith        |
|      2 | Chris         | Brown        |
|      3 | David         | Miller       |
|      4 | Carol         | Taylor       |
+--------+---------------+--------------+
4 rows in set (0.00 sec)

조건을 적용한 그룹 연결 실행

이제 WHERE 절로 조건을 설정하여, UserId가 4보다 작은 레코드의 성(Last Name)만 GROUP_CONCAT()으로 연결해 보겠습니다.

mysql> select group_concat(UserLastName) from DemoTable813 where UserId < 4;

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

+----------------------------+
| group_concat(UserLastName) |
+----------------------------+
| Smith,Brown,Miller         |
+----------------------------+
1 row in set (0.00 sec)

결과를 보면 UserId가 1~3인 레코드의 성인 Smith, Brown, Miller가 쉼표로 구분되어 하나의 문자열로 연결된 것을 확인할 수 있습니다. UserId가 4인 'Taylor'는 조건(WHERE UserId < 4)에 해당하지 않으므로 결과에서 제외되었습니다.

이처럼 GROUP_CONCAT() 함수와 WHERE 절을 함께 활용하면 원하는 조건의 데이터만 손쉽게 하나의 문자열로 묶어 조회할 수 있습니다. 참고로 기본 구분자는 쉼표(,)이며, SEPARATOR 옵션을 사용하면 다른 구분자로 변경할 수도 있습니다.