Как использовать GROUP BY для concat строк в mysql

обычный запрос

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.