jueves, 11 de febrero de 2010

Concatenar filas en una columna (MySQL)

Este truco lo vi en la documentación de MySQL (vamos, sí, sí. no es Java, pero es algo que encontré y quiero compartirlo).

Imaginemos que tenemos una tabla así
+--------+--------+
| campo1 | campo2 |
+--------+--------+
| fila1  |   a    |
| fila2  |   b    |
| fila2  |   c    |
| fila1  |   b    |
| fila3  |   b    |
| fila2  |   c    |
+--------+--------+

Y queremos concatenar todos los valores del campo2 por cada fila no repetida de campo1 así:
+--------+--------+
| campo1 | campo2 |
+--------+--------+
| fila1  |  a,b   |
| fila2  |  b,c   |
| fila3  |   b    |
+--------+--------+

Para ello, hay que usar la función de agregación GROUP_CONCAT


SELECT campo1,group_concat(distinct campo2) FROM tabla GROUP BY 1


2 comentarios:

  1. Excelente aporte!!! Gracias!!

    ResponderEliminar
  2. SELECT
    CONCAT(group_concat(campo2),".") as cadenacampo2,
    tabla.campo1
    FROM transportes
    GROUP BY
    transportes.campo1

    ResponderEliminar

Si quieres hacer una pregunta más específica, hazla en los foros que tenemos habilitados en Google Groups


Ah! solo se permiten comentarios de usuarios registrados. Si tienes OpenID, bienvenido! Puedes obtener su OpenID, aquí: http://openid.net/