필요에 의해 서로 다른 결과를 한줄로 합쳐서 보여줘야 할 경우가 있다.
전체 결과값을 가져와서 java 와 같은 프로그램 언어에서 for 문을 돌며 문자열을 붙여도 되긴 하지만
Select 쿼리를 던질때 결과값으로 합쳐져 있는 문자열을 받는게 더 편하다.
select * from test ;
type |
name |
fruit |
수박 |
fruit |
사과 |
fruit |
바나나 |
fruit | 사과 |
select type, group_concat(name) from test group by type ;
type |
name |
fruit |
수박,사과,바나나,사과 |
group_concat을 기본적인 형태로 사용했을경우 문자열 사이에 쉼표(,)가 붙게 된다.
구분자를 변경하고 싶을때는 아래와 같이 SEPARATOR '구분자' 를 붙여 준다.
select type, group_concat(name separator '|') from test group by type ;
type |
name |
fruit |
수박|사과|바나나|사과 |
합쳐지는 문자열에 중복되는 문자열을 제거 할때는 distinct 를 사용한다.
select type, group_concat(distinct name) from test group by type ;
type |
name |
fruit |
수박,사과,바나나 |
문자열을 정렬하여 나타내고 싶으면 order by 를 이용한다.
select type, group_concat(distinct name order by name) from test group by type ;
type |
name |
fruit |
바나나,사과,수박 |
[정리]
MySQL에서 group by 로 문자열을 합칠땐 group_concat 을 이용한다.
1. 기본형 : group_concat(필드명)
2. 구분자 변경 : group_concat(필드명 separator '구분자')
3. 중복제거 : group_concat(distinct 필드명)
4. 문자열 정렬 : group_concat(필드명 order by 필드명)
[참고]
MySQL Group BY function
Name | Description |
---|---|
AVG() | Return the average value of the argument |
BIT_AND() | Return bitwise and |
BIT_OR() | Return bitwise or |
BIT_XOR() | Return bitwise xor |
COUNT(DISTINCT) | Return the count of a number of different values |
COUNT() | Return a count of the number of rows returned |
GROUP_CONCAT() | Return a concatenated string |
MAX() | Return the maximum value |
MIN() | Return the minimum value |
STD() | Return the population standard deviation |
STDDEV_POP() | Return the population standard deviation |
STDDEV_SAMP() | Return the sample standard deviation |
STDDEV() | Return the population standard deviation |
SUM() | Return the sum |
VAR_POP() | Return the population standard variance |
VAR_SAMP() | Return the sample variance |
VARIANCE() | Return the population standard variance |
URL : http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html
[TIP]
오라클의 경우 mysql의 group_concat을 아래와 같이 대체하여 사용이 가능하다.
오라클 10G : WM_CONCAT()
오라클 11G : LISTAGG()
'DataBase' 카테고리의 다른 글
[DBMS] 간단한 Null 체크 방법 (0) | 2014.07.31 |
---|---|
[DBMS] DML, DDL, DCL 뜻 (0) | 2014.07.29 |
[MySQL] 사용자 계정 생성 및 권한 주기 (0) | 2014.07.24 |
[MySQL] DB 백업 및 복구 (import / export) (0) | 2014.07.24 |
[MySQL] DB 생성 및 DB 삭제 (0) | 2014.07.24 |