select id, group_concat(`Name` separator ',') as `ColumnName`
from
(
select
id,
concat(`Name`, ':', group_concat(`Value` separator ',')) as `Name`
from mytbl
group by
id,
`Name`
) tbl
group by id;
आप इसे यहां कार्यान्वित होते हुए देख सकते हैं:एसक्यूएल फिडल डेमो . ठीक वही जो आपको चाहिए।
अपडेट करें दो चरणों में बंटवारा। सबसे पहले हमें एक अद्वितीय [नाम, आईडी] के खिलाफ सभी मान (अल्पविराम से अलग) वाली एक तालिका मिलती है। फिर प्राप्त तालिका से हमें प्रत्येक अद्वितीय आईडी के विरुद्ध एक ही मान के रूप में सभी नाम और मान मिलते हैं इसे यहां देखें एसक्यूएल फिडल डेमो (नीचे स्क्रॉल करें क्योंकि इसमें दो परिणाम सेट हैं)
संपादित करें प्रश्न पढ़ने में गलती हुई थी, मैंने केवल id के आधार पर ग्रुप किया था। लेकिन दो group_contacts की आवश्यकता है यदि (मानों को नाम और आईडी द्वारा समूहीकृत किया जाना है और फिर आईडी द्वारा सभी पर)। पिछला उत्तर था
select
id,group_concat(concat(`name`,':',`value`) separator ',')
as Result from mytbl group by id
आप इसे यहां कार्यान्वित होते हुए देख सकते हैं:SQL Fiddle Demo