2012-10-08 18 views
5

मुझे शायद कोई मस्तिष्क पल नहीं है।MySQL GROUP_CONCAT एकाधिक फ़ील्ड्स

मैं अपने डेटाबेस में दो फ़ील्ड से GROUP_CONCAT का उपयोग कर संख्याओं की एक श्रृंखला वापस करना चाहता हूं। मैंने यह किया है अब तक निम्नलिखित का उपयोग कर:

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

यह ठीक काम करता है, लेकिन अगर i_id शून्य तो निश्चित रूप से है मैं एक अनावश्यक अल्पविराम मिलता है। क्या ऐसा करने का कोई बेहतर तरीका है, इसलिए अगर मैं शून्य हूं तो अंत में मैं अल्पविराम से समाप्त नहीं होता?

उत्तर

13

आप CONCAT_WS उपयोग करने के लिए अतिरिक्त commaNULL के लिए मूल्यों से बचने की जरूरत है, इस प्रयास करें:

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

यानी किसी एक एक (,) के साथ किसी भी डबल अल्पविराम (,,) की जगह होगा, लेकिन है कि मेरी समस्या नहीं है । यदि i_id शून्य है तो परिणामस्वरूप मुझे 2,6,8 परिणाम मिलते हैं, जब मुझे आवश्यकता होती है तो 2,6,8 –

+0

'CONCAT_WS' आपके लिए काम करना चाहिए। – Omesh

+0

धन्यवाद। यह बहुत अच्छा काम करता है। –

संबंधित मुद्दे