Basicamente, a questão é como obter isso:
foo_id foo_name 1 A 1 B 2 C
para isso:
foo_id foo_name 1 AB 2 C
Basicamente, a questão é como obter isso:
foo_id foo_name 1 A 1 B 2 C
para isso:
foo_id foo_name 1 AB 2 C
Respostas:
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
No link acima,: GROUP_CONCAT
Esta função retorna um resultado de sequência com os valores não NULL concatenados de um grupo. Retorna NULL se não houver valores que não sejam NULL.
SELECT id, GROUP_CONCAT( string SEPARATOR ' ') FROM table GROUP BY id
Mais detalhes aqui .
No link acima,: GROUP_CONCAT
Esta função retorna um resultado de sequência com os valores não NULL concatenados de um grupo. Retorna NULL se não houver valores que não sejam NULL.
SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;
: - No MySQL, você pode obter os valores concatenados das combinações de expressões. 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 (decrescente) ao nome da coluna pela qual você está classificando na cláusula ORDER BY. O padrão é ordem crescente; isso pode ser especificado explicitamente usando a palavra-chave ASC. O separador padrão entre 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 completamente o separador, especifique 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;
O resultado é truncado para o comprimento máximo fornecido pela variável de sistema group_concat_max_len, que possui um valor padrão de 1024 caracteres, então primeiro:
SET group_concat_max_len=100000000;
e depois, por exemplo:
SELECT pub_id,GROUP_CONCAT(cate_id SEPARATOR ' ') FROM book_mast GROUP BY pub_id
group_concat_max_len
configuração? Conexão / sessão atual ou afetará outros clientes?
Ótimas respostas. Também tive um problema com o NULLS e consegui resolvê-lo incluindo um COALESCE dentro do GROUP_CONCAT. Exemplo da seguinte maneira:
SELECT id, GROUP_CONCAT(COALESCE(name,'') SEPARATOR ' ')
FROM table
GROUP BY id;
Espero que isso ajude outra pessoa