328 votos

¿Cómo usar GROUP BY para concatenar cadenas en MySQL?

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

ID    cadena
1          A
1          B
2          C

a esto:

ID    cadena
1          A B
2          C

491voto

Scott Noyes Puntos 1596
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

161voto

Graeme Perrow Puntos 22249
Más detalles aquí .

17voto

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

Le dará una cadena delimitada por comas

16voto

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

:- En MySQL, puede obtener la concatenación de los valores de expresión de combinaciones . Para eliminar los valores duplicados, el uso de los DISTINTOS cláusula. Para ordenar los valores en el resultado, el uso de la cláusula ORDER BY. Para ordenar en orden inverso, agregar los DESC (descendente) de la palabra clave en el nombre de la columna que se ordenan en la cláusula ORDER BY. El valor predeterminado es orden ascendente; esto puede ser especificado explícitamente el uso de la palabra clave ASC. El separador por defecto entre los valores de un grupo es por comas (","). Para especificar un separador explícitamente, el uso de SEPARADOR seguida por el literal de cadena de valor que debe ser insertado entre los valores del grupo. Para eliminar el separador en total, especificar el 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;

13voto

Waqar Alamgir Puntos 3222
SET group_concat_max_len=100000000

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X