Combinar varias filas en una sola cadena espacio separado
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
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:
SELECT
userid,
concat_ws(" ", collect_set(col)) AS combined
FROM table
GROUP BY userid
-
MySQL
con duplicados:select col1, group_concat(col2) from table1 group by col1
-
MySQL
sin duplicados:select col1, group_concat(distinct col2) from table1 group by col1
-
Hive
con duplicados:select col1, collect_list(col2) from table1 group by col1
-
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