Sie können die partitionierten simulieren row_number Benutzervariablen und dann Reihen begrenzen und gelten Group_concat:
Betrachten Sie die folgende Tabelle:
create table your_table (
id int primary key autoincrement,
category int,
value int
);
und Daten:
insert into your_table (category, value)
values
(1, 1), (1, 2), (1, 3), (1, 4), (1, 5),
(2, 6), (2, 7), (2, 8), (2, 9), (2, 10),
(3, 11), (3, 12), (3, 13), (3, 14), (3, 15);
Und wir wollen ist top 3 (in der Reihenfolge der letzten ID) Wert pro verketteter Kategorie:
select category,
group_concat(value order by id desc) as value_con
from (
select t.*,
@rn := if(@category = category, @rn + 1, if(@category := category,1, 1)) as seqnum
from your_table t
cross join (select @category := null, @rn := 0) x
order by t.category, t.id desc
) t
where seqnum <= 3
group by category;
Ausgang:
category value_con
1 5,4,3
2 10,9,8
3 15,14,13
Hier ist ein demo dafür.
Erhöhung group_concat_max_len Wert in my.cnf – Omesh
können Sie Ihre Antwort hier http://stackoverflow.com/questions/3378324/limit-ignored-in-query-with-group-concat bekommen http://stackoverflow.com/questions/23608464/group-concat-with-limit –