正常查詢如何使用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 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 |
非常感謝@bluefeet – user3214838 2013-03-07 14:17:10
@Cengizhangetking歡迎您! – Taryn 2013-03-07 14:18:26
這是令人難以置信的。我以前使用過group_concat,但從來沒有想過在連接它們的同時對它們進行編號。 – Chandranshu 2014-08-06 07:22:53
看看GROUP_CONCAT() function of MySQL。
但我會在PHP中做的編號。
[你有什麼嘗試?](http://www.whathaveyoutried.com/)請參閱[問問建議](http://stackoverflow.com/questions/ask-advice),請。 – 2013-03-07 14:01:06
在'sid = 3'中,爲什麼分別是'ZZZ'和'EEE'#1和#2,而不是相反呢?或者沒有關係? – eggyal 2013-03-07 14:05:22
沒關係.. – user3214838 2013-03-07 14:07:40