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

एक सामान्य विशेषता के साथ लगातार रिकॉर्ड के समूह का चयन करना?

क्या आप यह कोशिश कर सकते हैं? आप यहां परीक्षण कर सकते हैं http://www.sqlfiddle.com/#!2/57967 /12

Select grp_new, group_concat(ord)
From (
   Select ord, if(grp = @prev, @seq, @seq := @seq + 1) as seq,
    if(grp = @prev, grp, @prev := grp) as grp_new
  From tab, (SELECT @seq := 0, @prev := '') AS init
  Order by ord
) x
Group by grp_new, seq;

मुख्य विचार समान seq उत्पन्न करना है लगातार समान समूह के लिए निम्नानुसार है।

Select
   ord, if(grp = @prev, @seq, @seq := @seq + 1) as seq,
    if(grp = @prev, grp, @prev := grp) as grp_new
From tab, (SELECT @seq := 0, @prev := '') AS init
Order by ord

फिर अंत में GROUP BY grp, seq . को समूहीकृत करना जो प्रत्येक लगातार समूहों में अंतर कर सकता है, भले ही उनके पास समान grp . हो ।

संपादित करें:उदाहरण में बिल्कुल परिणाम प्राप्त करने के लिए:

Select grp_new, group_concat(ord order by ord)
From (
  Select ord, if(grp = @prev, @seq, @seq := @seq + 1) as seq,
    if(grp = @prev, grp, @prev := grp) as grp_new
  From tab, (SELECT @seq := 0, @prev := '') AS init
  Order by ord
) x
Group by seq


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysqli तैयार बयानों का उपयोग कैसे करें?

  2. asp.net/MySQL:उपयोगकर्ता ''@'लोकलहोस्ट' के लिए प्रवेश निषेध (पासवर्ड का उपयोग करके:नहीं)

  3. पीएचपी डेटा ऑब्जेक्ट सम्मिलित निष्पादित नहीं कर रहा है

  4. MySQL:LIKE . पर दो तालिकाओं में शामिल हों

  5. एक MySQL तालिका पंक्ति में समय और दिनांक स्टाम्प