2012-10-08 24 views
5

Probablemente estoy teniendo un momento sin cerebro.MySQL GROUP_CONCAT campos múltiples

Quiero devolver una serie de números usando GROUP_CONCAT desde dos campos en mi base de datos. Lo he hecho hasta ahora utilizando la siguiente:

SELECT t_id, 
CONCAT(GROUP_CONCAT(DISTINCT s_id),',',IFNULL(GROUP_CONCAT(DISTINCT i_id),'')) AS all_ids 
FROM mytable GROUP BY t_id 

Esto funciona bien, pero si i_id es NULL entonces por supuesto que obtener una coma innecesaria. ¿Hay una mejor manera de hacerlo así que no termino con una coma al final si i_id es NULL?

Respuesta

13

Es necesario utilizar CONCAT_WS para evitar comma adicionales para NULL valores, intente esto:

SELECT t_id, 
     CONCAT_WS(',', GROUP_CONCAT(DISTINCT s_id), 
       GROUP_CONCAT(DISTINCT i_id)) AS all_ids 
FROM mytable 
GROUP BY t_id; 
+0

que reemplazaría cualquier comas doble (,,) con una sola (,) pero eso no es mi problema . Si el i_id es nulo, termino con un resultado de 2,6,8, cuando lo que necesito es 2,6,8 –

+0

'CONCAT_WS' debería funcionar para usted. – Omesh

+0

Gracias. Eso funciona genial –