Como usar o GROUP BY para concatenar strings no MySQL?

Basicamente, a questão é como obter isso:

 string de id
 1 A
 1 B
 2 C

para isso:

 string de id
 1 AB
 2 C

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

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

No link acima, GROUP_CONCAT : Essa function retorna um resultado de cadeia com os valores não NULL concatenados de um grupo. Ele retorna NULL se não houver valores não-NULL.

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

Mais detalhes aqui .

No link acima, GROUP_CONCAT : Essa function retorna um resultado de cadeia com os valores não NULL concatenados de um grupo. Ele retorna NULL se não houver valores não-NULL.

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

Vai te dar uma string delimitada por vírgula

 SET group_concat_max_len=100000000 
 SELECT id, GROUP_CONCAT(string SEPARATOR ' ') FROM table GROUP BY id; 

: – No MySQL, você pode obter os valores concatenados de combinações de expressão. Para eliminar valores duplicados, use a cláusula DISTINCT . Para classificar valores no resultado, use a cláusula ORDER BY. Para classificar em ordem inversa , adicione a palavra-chave DESC (descendente) ao nome da coluna pela qual você está classificando na cláusula ORDER BY. O padrão é a ordem crescente. isso pode ser especificado explicitamente usando a palavra-chave ASC. O separador padrão entre os valores em um grupo é vírgula (“,”). Para especificar um separador explicitamente, use SEPARATOR seguido pelo valor literal da string que deve ser inserido entre os valores do grupo. Para eliminar o separador, especifique o SEPARATOR ” .

 GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]] [SEPARATOR str_val]) 

OU

 mysql> SELECT student_name, -> GROUP_CONCAT(DISTINCT test_score -> ORDER BY test_score DESC SEPARATOR ' ') -> FROM student -> GROUP BY student_name; 

Ótimas respostas. Eu também tive um problema com o NULLS e consegui resolvê-lo incluindo um COALESCE dentro do GROUP_CONCAT. Exemplo da seguinte forma:

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

Espero que isso ajude alguém