क्या आप यह कोशिश कर सकते हैं? आप यहां परीक्षण कर सकते हैं 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