2012-10-08 9 views
5

Ich habe wahrscheinlich einen No-Brain-Moment.MySQL GROUP_CONCAT mehrere Felder

Ich möchte eine Reihe von Zahlen mit GROUP_CONCAT aus zwei Feldern in meiner Datenbank zurückgeben. Ich habe dies getan weit mit dem folgenden:

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

Das funktioniert gut, aber wenn I_ID NULL ist dann natürlich bekomme ich ein unnötiges Komma. Gibt es einen besseren Weg, dies zu tun, damit ich am Ende kein Komma bekomme, wenn i_id NULL ist?

Antwort

13

Sie müssen CONCAT_WS verwenden, um zusätzliche comma für NULL Werte zu vermeiden, versuchen Sie dies:

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

jegliche Doppel Kommas (,,) mit einem einzigen ersetzen würde (,), aber das ist nicht mein Problem . Wenn die i_id Null ist, habe ich am Ende ein Ergebnis von 2,6,8, wenn das, was ich brauche, 2,6,8 –

+0

'CONCAT_WS' sollte für Sie arbeiten. – Omesh

+0

Danke. Das funktioniert großartig. –