답변:
SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat
위의 링크에서 GROUP_CONCAT
:이 함수는 그룹에서 연결된 NULL이 아닌 값으로 문자열 결과를 반환합니다. NULL이 아닌 값이 없으면 NULL을 반환합니다.
SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;
:-MySQL에서는 연결된 표현식 조합 값을 얻을 수 있습니다. 중복 값을 제거하려면 DISTINCT 절을 사용하십시오 . 결과에서 값을 정렬하려면 ORDER BY 절을 사용하십시오. 역순으로 정렬하려면 ORDER BY 절에서 정렬중인 컬럼 이름에 DESC (내림차순) 키워드를 추가하십시오 . 기본값은 오름차순입니다. ASC 키워드를 사용하여 명시 적으로 지정할 수 있습니다. 그룹의 값 사이의 기본 구분 기호는 쉼표 (“,”)입니다. 구분자를 명시 적으로 지정하려면 SEPARATOR를 사용하고 그 뒤에 그룹 값 사이에 삽입해야하는 문자열 리터럴 값을 사용하십시오. 구분 기호를 모두 제거하려면 SEPARATOR ''를 지정하십시오 .
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
또는
mysql> SELECT student_name,
-> GROUP_CONCAT(DISTINCT test_score
-> ORDER BY test_score DESC SEPARATOR ' ')
-> FROM student
-> GROUP BY student_name;
결과는 기본값이 1024자인 group_concat_max_len 시스템 변수가 제공하는 최대 길이로 잘 리므로 먼저 다음을 수행하십시오.
SET group_concat_max_len=100000000;
그런 다음 예를 들면 다음과 같습니다.
SELECT pub_id,GROUP_CONCAT(cate_id SEPARATOR ' ') FROM book_mast GROUP BY pub_id
group_concat_max_len
구성 의 범위는 무엇입니까 ? 현재 연결 / 세션입니까 아니면 다른 클라이언트에 영향을 줍니까?