그룹별로 모든 행을 나열하려면 GROUP_CONCAT()을 사용할 수 있습니다. 먼저 테이블을 생성하겠습니다 -
mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Name varchar(20), Value varchar(100) ); Query OK, 0 rows affected (0.62 sec)
삽입 명령을 사용하여 테이블에 일부 레코드 삽입 -
mysql> insert into DemoTable(Name,Value) values('John','John'); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable(Name,Value) values('Carol','Carol'); Query OK, 1 row affected (0.21 sec) mysql> insert into DemoTable(Name,Value) values('John','Works'); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable(Name,Value) values('Carol','Works'); Query OK, 1 row affected (0.22 sec) mysql> insert into DemoTable(Name,Value) values('John','At'); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable(Name,Value) values('Carol','At'); Query OK, 1 row affected (0.16 sec) mysql> insert into DemoTable(Name,Value) values('John','Amazon'); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable(Name,Value) values('Carol','Google'); Query OK, 1 row affected (0.16 sec)
select 문을 사용하여 테이블의 모든 레코드 표시 -
mysql> select *from DemoTable;
그러면 다음과 같은 출력이 생성됩니다. -
+----+-------+--------+ | Id | Name | Value | +----+-------+--------+ | 1 | John | John | | 2 | Carol | Carol | | 3 | John | Works | | 4 | Carol | Works | | 5 | John | At | | 6 | Carol | At | | 7 | John | Amazon | | 8 | Carol | Google | +----+-------+--------+ 8 rows in set (0.00 sec)
다음은 그룹별로 모든 행을 나열하는 쿼리입니다. 여기서 'John'에 대한 값을 가져옵니다. 즉, "John은 id 1, 3, 5, 7에서 Amazon에서 작동합니다. 같은 방식으로 'Carol'에 대해 작동합니다. -
mysql> select Name, GROUP_CONCAT(Value SEPARATOR ' ') AS `Complete_Status` from DemoTable group by Name;
이것은 다음과 같은 출력을 생성합니다 -
+-------+-----------------------+ | Name | Complete_Status | +-------+-----------------------+ | Carol | Carol Works At Google | | John | John Works At Amazon | +-------+-----------------------+ 2 rows in set (0.00 sec)