[sql] GROUP BY를 사용하여 MySQL에서 문자열을 연결하는 방법은 무엇입니까?
기본적으로 문제는 이것으로부터 얻는 방법입니다.
foo_id foo_name 1 개 1 개 B 2 C
이에:
foo_id foo_name 1 AB 2 C
답변
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( string SEPARATOR ' ') FROM table GROUP BY id
위의 링크에서 GROUP_CONCAT
:이 함수는 그룹에서 연결된 NULL이 아닌 값으로 문자열 결과를 반환합니다. NULL이 아닌 값이 없으면 NULL을 반환합니다.
답변
SELECT id, GROUP_CONCAT(CAST(name as CHAR)) FROM table GROUP BY id
쉼표로 구분 된 문자열을 제공합니다
답변
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
답변
좋은 답변입니다. 또한 NULLS에 문제가 있었고 GROUP_CONCAT 안에 COALESCE를 포함 시켜서 해결할 수있었습니다. 다음과 같은 예 :
SELECT id, GROUP_CONCAT(COALESCE(name,'') SEPARATOR ' ')
FROM table
GROUP BY id;
이것이 다른 누군가를 돕기를 바랍니다.