Pregunta

Básicamente la pregunta es cómo obtener de esto:

id    string
1          A
1          B
2          C

a esto:

id    string
1          A B
2          C
¿Fue útil?

Solución

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

Desde el enlace de arriba, 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.

Otros consejos

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

Más detalles aquí .

Desde el enlace de arriba, 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(CAST(string as CHAR)) FROM table GROUP BY id

Le dará una cadena delimitada por comas

SET group_concat_max_len=100000000
SELECT id, GROUP_CONCAT(string 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 (& # 8220;, & # 8221;). 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 SEPARATOR '' .

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;

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(string,'') SEPARATOR ' ') 
FROM table 
GROUP BY id;

Espero que esto ayude a alguien más

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top