Pregunta

Así que tengo 5 filas como esto

userid, col
--------------
1, a
1, b
2, c
2, d
3, e

¿Cómo puedo hacer la consulta por lo que se verá así

userid, combined
1, a b
2, c d
3, e
¿Fue útil?

Solución

Utilice la función GROUP_CONCAT agregada :

  SELECT yt.userid,
         GROUP_CONCAT(yt.col SEPARATOR ' ') AS combined
    FROM YOUR_TABLE yt
GROUP BY yt.userid

El separador predeterminado es una coma ( ""), por lo que es necesario especificar el separador de un espacio único para obtener el resultado que desea.

Si desea garantizar el orden de los valores en el GROUP_CONCAT, utilice:

  SELECT yt.userid,
         GROUP_CONCAT(yt.col ORDER BY yt.col SEPARATOR ' ') AS combined
    FROM YOUR_TABLE yt
GROUP BY yt.userid

Otros consejos

En la colmena puede utilizar

SELECT userid, collect_set(combined) FROM tabel GROUP BY user_id;

elimina collect_set duplican. Si necesita mantenerlas se puede comprobar este post:

COLLECT_SET () en la colmena, mantener duplicados?

SELECT 
  userid,
  concat_ws(" ", collect_set(col)) AS combined
FROM table 
GROUP BY userid
  1. MySQL con duplicados: select col1, group_concat(col2) from table1 group by col1
  2. MySQL sin duplicados: select col1, group_concat(distinct col2) from table1 group by col1
  3. Hive con duplicados: select col1, collect_list(col2) from table1 group by col1
  4. Hive sin duplicados: select col1, collect_set(col2) from table1 group by col1

estoy bastante seguro de que no se puede hacer esto utilizando la colmena QL. Sin embargo, debería ser posible hacerlo si escribe su propio mapa / Reducir guiones - ver este tutorial para empezar.

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