MySQL GROUP_CONCAT

-- MySQL 2013. 6. 18. 18:03
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

보통 테이블을 SELECT하면 테이블에 존재하는 레코드 수만큼 반환을 하게 되는데, 때때로 반환한 레코드를 한 줄의 데이터로 변경할 경우가 있다.

예를들면,

one
two
three

테이블의 컬럼 데이터를 one, two, three로 반환하고 싶은 것이다.

이런 경우 MySQL에서는 GROUP_CONCAT을 사용한다.

SELECT group_concat(name) FROM Test;

또한, group_concat을 사용할 때 대량의 데이터를 사용할 때 종종 잘리기도 하는데 아래의 옵션을 조정하여 해결할 수 있다.

mysql> SET @@group_concat_max_len = 크기; 


전체적용 쿼리) SET group_concat_max_len = 크기;


세션적용 쿼리) SET SESSION qroup_concat_max_len = 크기; 

 


추가) 2013-08-13

1. group_concat을 하면 기본적으로 ,로 구분하여 데이터가 나타나는데, 이 구분자를 변경할 필요가 있을 수 있다.

SELECT group_concat(name SEPARATOR '|') FROM Test;

만약 |로 구분하고 싶다면 위의 예처럼 사용이 가능하다.


2. group_concat을 했는데 결과에 중복값들이 있어 중복제거가 필요할 경우

SELECT group_concat(DISTINCT name) FROM Test;


3. group_concat의 결과를 정렬하고 싶다면

SELECT group_concat(name ORDER BY name) FROM Test;

 

'-- MySQL' 카테고리의 다른 글

MySQL Linked Server - Federated Engine  (0) 2013.07.08
날짜검색 시 주의사항  (0) 2013.06.18
MySQL 대소문자 구분할 수 있는 컬럼  (0) 2013.06.18
MINUS와 INTERSECT 집합 연산  (0) 2013.05.29
mysql에서 rownum 사용  (0) 2013.05.10
posted by 어린왕자악꿍