Bạn có thể sử dụng GROUP_CONCAT()
hàm nhận các giá trị vào một hàng duy nhất và bạn có thể sử dụng các biến do người dùng xác định để gán số cho mỗi giá trị trong sid
nhóm:
select sid,
group_concat(concat(rn, '. ', string) ORDER BY id SEPARATOR ' ') string
from
(
select id,
sid,
string,
@row:=case when @prev=sid then @row else 0 end +1 rn,
@prev:=sid
from yourtable
cross join (select @row:= 0, @prev:=null) r
order by id
) src
group by sid
Xem SQL Fiddle with Demo , Kết quả là:
| SID | STRING |
-----------------------
| 1 | 1. AAA 2. BBB |
| 2 | 1. CCC |
| 3 | 1. ZZZ 2. EEE |