Necesito ejecutar una consulta como:
SELECT p.id, p.name,
(SELECT name
FROM sites s
WHERE s.id = p.site_id) AS site_list
FROM publications p
Pero me gustaría que la sub-selección devuelva una lista separada por comas, en lugar de una columna de datos. ¿Es esto posible, y si es así, cómo?
sql
mysql
concatenation
Glen Solsberry
fuente
fuente
GROUP_CONCAT(CAST(s.name AS CHAR))
o de lo contrario simplemente devolverá algo completamente inútil[BLOB - 20 Bytes]
.En lugar de usar
group concat()
puedes usar soloconcat()
editar esto solo funciona en mySQL; Oracle concat solo acepta dos argumentos. En Oracle puede usar algo como select col1 || ',' || col2 || ',' || col3 como foobar de table1; en el servidor sql usaría + en lugar de tuberías.
fuente
Ahora solo me encontré con esta situación y encontré algunas características más interesantes
GROUP_CONCAT
. Espero que estos detalles te hagan sentir interesante.simple GROUP_CONCAT
Resultado:
GROUP_CONCAT con DISTINCT
Resultado:
GROUP_CONCAT con DISTINCT y ORDER BY
Resultado:
GROUP_CONCAT con DISTINCT y SEPARATOR
Resultado:
GROUP_CONCAT y columnas combinadas
Resultado:
GROUP_CONCAT y resultados agrupados Suponga que los siguientes son los resultados antes de usar
GROUP_CONCAT
Resultado:
fuente
En mi caso, tengo que concatenar todo el número de cuenta de una persona cuyo número de teléfono móvil es único. Así que he usado la siguiente consulta para lograr eso.
El resultado de la consulta está abajo:
fuente