programing

GROUP BY를 사용하여 MySQL에서 문자열을 연결하는 방법은 무엇입니까?

copyandpastes 2022. 9. 25. 22:35
반응형

GROUP BY를 사용하여 MySQL에서 문자열을 연결하는 방법은 무엇입니까?

기본적으로 문제는 이 문제를 어떻게 해결하느냐입니다.

foo_id foo_name1 A1 B섭씨 2도

다음과 같이 입력합니다.

foo_id foo_name1 A B섭씨 2도
SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;

https://dev.mysql.com/doc/refman/8.0/en/aggregate-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(name SEPARATOR ' ') FROM table GROUP BY id;

:- MySQL 에서는 expression combinations의 연결값을 얻을 수 있습니다.중복된 값을 제거하려면 DISTINCT 을 사용합니다.결과 값을 정렬하려면 ORDER BY 절을 사용합니다.역순으로 정렬하려면 ORDER BY 절에서 정렬할 열 이름에 DESC(내림차순) 키워드를 추가합니다.기본값은 오름차순입니다.ASC 키워드를 사용하여 명시적으로 지정할 수 있습니다.그룹의 값 사이의 기본 구분자는 쉼표("")입니다.구분 기호를 명시적으로 지정하려면 SEPERATOR 뒤에 그룹 값 사이에 삽입해야 하는 문자열 리터럴 값을 사용합니다.구분 기호를 모두 삭제하려면 SEPERATOR ' 지정합니다.

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;
SELECT id, GROUP_CONCAT(CAST(name as CHAR)) FROM table GROUP BY id

쉼표로 구분된 문자열을 제공합니다.

결과는 group_concat_max_len 시스템 변수에 의해 지정된 최대 길이로 잘립니다.기본값은 1024자입니다.따라서 먼저 다음 작업을 수행합니다.

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;

이게 다른 사람에게 도움이 되길 바란다.

언급URL : https://stackoverflow.com/questions/149772/how-to-use-group-by-to-concatenate-strings-in-mysql

반응형