Básicamente, la pregunta es cómo llegar a esto:
foo_id foo_name 1 A 1 B 2 C
a esto:
foo_id foo_name 1 AB 2 C
Básicamente, la pregunta es cómo llegar a esto:
foo_id foo_name 1 A 1 B 2 C
a esto:
foo_id foo_name 1 AB 2 C
Respuestas:
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
Desde el enlace anterior GROUP_CONCAT
: Esta función devuelve un resultado de cadena con los valores concatenados no NULL de un grupo. Devuelve NULL si no hay valores no NULL.
SELECT id, GROUP_CONCAT( string SEPARATOR ' ') FROM table GROUP BY id
Más detalles aquí .
Desde el enlace anterior GROUP_CONCAT
: Esta función devuelve un resultado de cadena con los valores concatenados no NULL de un grupo. Devuelve NULL si no hay valores no NULL.
SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;
: - En MySQL, puede obtener los valores concatenados de combinaciones de expresiones. Para eliminar valores duplicados, use la cláusula DISTINCT . Para ordenar los valores en el resultado, use la cláusula ORDER BY. Para ordenar en orden inverso , agregue la palabra clave DESC (descendente) al nombre de la columna por la que está ordenando en la cláusula ORDER BY. El valor predeterminado es el orden ascendente; esto puede especificarse explícitamente usando la palabra clave ASC. El separador predeterminado entre valores en un grupo es una coma (","). Para especificar un separador explícitamente, use SEPARATOR seguido del valor literal de la cadena que debe insertarse entre los valores del grupo. Para eliminar el separador por completo, especifique SEPARADOR '' .
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
O
mysql> SELECT student_name,
-> GROUP_CONCAT(DISTINCT test_score
-> ORDER BY test_score DESC SEPARATOR ' ')
-> FROM student
-> GROUP BY student_name;
El resultado se trunca a la longitud máxima dada por la variable de sistema group_concat_max_len, que tiene un valor predeterminado de 1024 caracteres, por lo que primero hacemos:
SET group_concat_max_len=100000000;
y luego, por ejemplo:
SELECT pub_id,GROUP_CONCAT(cate_id SEPARATOR ' ') FROM book_mast GROUP BY pub_id
group_concat_max_len
configuración? Conexión / sesión actual, ¿o afectará a otros clientes?
Grandes respuestas También tuve un problema con NULLS y logré resolverlo al incluir una COALESCE dentro de GROUP_CONCAT. Ejemplo de la siguiente manera:
SELECT id, GROUP_CONCAT(COALESCE(name,'') SEPARATOR ' ')
FROM table
GROUP BY id;
Espero que esto ayude a alguien más