Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

GROUP_CONCAT क्रमांकन

वर्षों बाद, हमें 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 . को असाइन किया गया व्यंजक बदलने की जरूरत होगी। उदाहरण के लिए आप उन मानों को जोड़ सकते हैं जो एक समूह को परिभाषित करते हैं।

दो वर्णों के विभाजक का उपयोग करके आप सुनिश्चित करते हैं कि प्रत्येक नाम के बीच एक स्थान हो।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL ड्रॉप डेटाबेस विशेषाधिकार?

  2. सी ++ में एक mysql++ क्वेरी को टाइमआउट कैसे करें

  3. प्रॉक्सीएसक्यूएल:सभी कई संसाधन

  4. वैंप सर्वर पर चल रहे लोकलहोस्ट से mySQL डेटाबेस का बैकअप लें

  5. MySQL पर प्राथमिक कुंजी के लिए डुप्लिकेट प्रविष्टि