MySQL 8.0如何将查询得到的不同行结果拼接合并到单个列中
MySQL 8.0 多值拼接查询修改方案
你可以使用MySQL原生的GROUP_CONCAT聚合函数实现同组多值合并,修改后的查询语句如下:
SELECT clientescertificadosdescripciones.idClienteCertificadoDescripcion, clientescertificadosdescripciones.cantidadClienteCertificadoDescripcion, clientescertificadosdescripciones.tipoResiduoClienteCertificadoDescripcion, clientescertificadosdescripciones.presentacionResiduoClienteCertificadoDescripcion, clientescertificadosdescripciones.tratamientoResiduoClienteCertificadoDescripcion, clientescertificadosdescripciones.idClienteCertificado, -- 拼接同组的分类名称,默认用逗号分隔,可修改SEPARATOR参数自定义分隔符 GROUP_CONCAT(DISTINCT gruposresiduosclasificacionesanexosiyii.nombreGruposResiduoClasificacionAnexoIyII ORDER BY gruposresiduosclasificacionesanexosiyii.nombreGruposResiduoClasificacionAnexoIyII SEPARATOR ',') AS nombreGruposResiduoClasificacionAnexoIyII FROM clientescertificadosdescripciones INNER JOIN clientescertificados ON clientescertificadosdescripciones.idClienteCertificado = clientescertificados.idClienteCertificado INNER JOIN solicitudesrecolecciones ON clientescertificados.idSolicitudRecoleccion = solicitudesrecolecciones.idSolicitudRecoleccion INNER JOIN solicitudesrecoleccionesgruposresiduos ON solicitudesrecolecciones.idSolicitudRecoleccion = solicitudesrecoleccionesgruposresiduos.idSolicitudRecoleccion INNER JOIN gruposresiduos ON solicitudesrecoleccionesgruposresiduos.idGrupoResiduo = gruposresiduos.idGrupoResiduo INNER JOIN configuracionesgruposresiduos ON gruposresiduos.idGrupoResiduo = configuracionesgruposresiduos.idGrupoResiduo INNER JOIN configuracionesgruposresiduosclasificacionesanexosiyii ON configuracionesgruposresiduos.idConfiguracionGrupoResiduo = configuracionesgruposresiduosclasificacionesanexosiyii.idConfiguracionGrupoResiduo INNER JOIN gruposresiduosclasificacionesanexosiyii ON configuracionesgruposresiduosclasificacionesanexosiyii.idGruposResiduoClasificacionAnexoIyII = gruposresiduosclasificacionesanexosiyii.idGruposResiduoClasificacionAnexoIyII WHERE clientescertificadosdescripciones.idClienteCertificado = 8 GROUP BY -- 按主表主键分组即可唯一确定其余非聚合字段 clientescertificadosdescripciones.idClienteCertificadoDescripcion ORDER BY clientescertificadosdescripciones.idClienteCertificadoDescripcion ASC
补充说明
- 代码中
DISTINCT可以避免拼接重复的分类名称,不需要的话可以直接删除 SEPARATOR ','用来指定拼接的分隔符,你可以根据需求改成顿号、斜杠等其他符号- 如果拼接的内容长度超过默认限制(默认1024字节),可以在执行查询前先运行
SET SESSION group_concat_max_len = 102400;临时调大长度限制,单位为字节
内容的提问来源于stack exchange,提问作者macsim
相关产品推荐
相关产品推荐

