обычный запрос
id sid string 5 1 AAA 6 1 BBB 7 2 CCC 8 3 ZZZ 9 3 EEE
я хочу
sid string 1 1. AAA 2. BBB 2 1. CCC 3 1. ZZZ 2. EEE
Вы знаете, как это сделать?
Вы можете использовать функцию GROUP_CONCAT()
чтобы получить значения в одну строку, и вы можете использовать определяемые пользователем переменные, чтобы присвоить номер каждому значению в группе sid
:
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
См. SQL Fiddle with Demo , результат:
| SID | STRING | ----------------------- | 1 | 1. AAA 2. BBB | | 2 | 1. CCC | | 3 | 1. ZZZ 2. EEE |
Посмотрите на функцию GROUP_CONCAT () MySQL .
Но нумерацию я бы сделал в PHP.