वर्षों बाद, हमें select
. के अंदर परिवर्तनशील चरों को छोड़ देना चाहिए कथन, जैसा कि MySQL 8 के बाद से हम विंडो फ़ंक्शंस के साथ मानक तरीके का उपयोग कर सकते हैं:
with base as (
select dep,
empnam,
count(*) over (partition by dep order by empnam) num
from t)
select dep,
group_concat(concat(num, '.', empnam) separator ', ') emps
from base
group by dep
देखें db-fiddle
मूल उत्तर (2016)
आप इसे एप्लिकेशन साइड पर कर सकते हैं, लेकिन MySQL 5.7 में यह संभव है। निम्नलिखित प्रश्न में, मुझे लगता है कि आप नामों को किसी चीज़ से समूहित करते हैं, उदाहरण के लिए उनका विभाग (मैंने इसे dep कहा है ) यह स्पष्ट करने के लिए कि काउंटर प्रत्येक नए समूह के लिए 1 से शुरू होता है।
select dep,
group_concat(
concat(@i := if (@grp = dep, @i + 1, if(@grp := dep,1,1)), '.', empnam)
separator ', ') emps
from t,
(select @i := 0, @grp := '') init
group by dep;
देखें SQL fiddle या db-fiddle ।
अपनी तालिका का नाम from
. में रखना सुनिश्चित करें खंड, और उस वास्तविक फ़ील्ड का उपयोग करने के लिए जिसे आप समूहबद्ध करना चाहते हैं। यदि आपके पास समूहबद्ध करने के लिए एकाधिक फ़ील्ड हैं, तो @i . को असाइन किया गया व्यंजक बदलने की जरूरत होगी। उदाहरण के लिए आप उन मानों को जोड़ सकते हैं जो एक समूह को परिभाषित करते हैं।
दो वर्णों के विभाजक का उपयोग करके आप सुनिश्चित करते हैं कि प्रत्येक नाम के बीच एक स्थान हो।