/ मूल्यों की सरणी के साथ पंक्तियों पर / group_concat - mysql, समूह-concat

मानों की सरणी के साथ पंक्तियों पर group_concat - mysql, समूह-concat

डुप्लिकेट मानों को वापस करने वाली विभिन्न पंक्तियों पर mysql में group_concat। तालिका फ़ील्ड मानों में अल्पविराम से अलग पूर्णांक की सरणी होती है।

id    port_id
---- -----------
1     0,1
1     1,2
1     0,1
1     3,5
2     1
2     2,6
1     7,1

जब मैं प्रत्येक आईडी के खिलाफ अलग पोर्ट_आईडी के लिए पूछताछ करता हूं तो हमेशा डुप्लिकेट होता है।

select group_concat(distinct port_id) as "grouped_ports"
from ports
where id =1
group by id;

परिणाम देता है

grouped_ports
----------------
0,1,1,2,3,5,7,1

group_concat से अलग-अलग मान कैसे प्राप्त करें जैसे आउटपुट के रूप में केवल 0,1,2,3,5,7?

उत्तर:

उत्तर № 1 के लिए 1

आप गलत समझ रहे हैं कि GROUP_CONCAT क्या करने के लिए क्वेरी बदल रहा है

select group_concat(distinct port_id separator " - ") as "grouped_ports"
from ports
where id =1
group by id;

आप देखेंगे कि यह इस तरह के तारों को जोड़ती है

0,1 - 1,2 - 3,5 - 7,1

ऐसा करने के लिए आपको अपने डेटाबेस को सामान्यीकृत करने की आवश्यकता है। इसे पूरा करने के तरीकों पर यहां कुछ उपयोगी लिंक दिए गए हैं

MySQL में एक कॉलम में डुप्लिकेट अल्पविराम से अलग मूल्य को कैसे हटाएं

https://dba.stackexchange.com/questions/87144/remove-duplicate-terms-from-column

वास्तव में आप जो करना चाहते हैं वह एक और टेबल बनाते हैं जिसमें प्रत्येक पोर्ट_आईडी में आपकी तालिका में मैप किया जाता है। इस तरह आप पहले से ही अद्वितीय पोर्ट_आईडी होगा