복붙노트

[SQL] 어떻게 MySQL의에서 CONCATENATE 문자열에 GROUP BY를 사용 하는가?

SQL

어떻게 MySQL의에서 CONCATENATE 문자열에 GROUP BY를 사용 하는가?

기본적으로 질문은 이것에서 얻는 방법이다 :

foo_id   foo_name
1        A
1        B
2        C

이에:

foo_id   foo_name
1        A B
2        C

해결법

  1. ==============================

    1.

    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을 반환합니다.

  2. ==============================

    2.

    SELECT id, GROUP_CONCAT( string SEPARATOR ' ') FROM table GROUP BY id
    

    더 자세한 사항은 여기에.

    , GROUP_CONCAT 위의 링크에서 :이 기능은 그룹에서 연결된 NULL이 아닌 값을 갖는 문자열 결과를 반환합니다. 더 NULL이 아닌 값이없는 경우는 NULL을 반환합니다.

  3. ==============================

    3.

    SELECT id, GROUP_CONCAT(CAST(name as CHAR)) FROM table GROUP BY id
    

    당신에게 쉼표로 구분 된 문자열을 줄 것이다

  4. ==============================

    4.

    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;
    
  5. ==============================

    5.우리가 먼저 할 수 있도록 결과는 1024 개 문자의 디폴트 값을 갖는 group_concat_max_len 시스템 변수에 의해 주어진 최대 길이로 잘립니다 :

    우리가 먼저 할 수 있도록 결과는 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
    
  6. ==============================

    6.큰 응답. 또한 NULLS에 문제가 있었고, GROUP_CONCAT의 COALESCE의 내부를 포함하여 그것을 해결하기 위해 관리. 예는 다음과 같습니다 :

    큰 응답. 또한 NULLS에 문제가 있었고, GROUP_CONCAT의 COALESCE의 내부를 포함하여 그것을 해결하기 위해 관리. 예는 다음과 같습니다 :

    SELECT id, GROUP_CONCAT(COALESCE(name,'') SEPARATOR ' ') 
    FROM table 
    GROUP BY id;
    

    이 다른 사람을 도움이되기를 바랍니다

  7. from https://stackoverflow.com/questions/149772/how-to-use-group-by-to-concatenate-strings-in-mysql by cc-by-sa and MIT license