MYSQL的GROUP_CONCAT函式

zebrayoung發表於2016-09-25

函式作用

用到group by時, 能將相同的行組合起來。

函式語法

group_concat( [DISTINCT] 要連線的欄位 [Order BY 排序欄位 ASC/DESC] [Separator `分隔符`] )

例子

比如我們有一個商品規格表,我想在後臺看到不同種類的商品都有哪些規格,id代表商品種類,spec代表商品規格


商品規格表

id  |  spec  
1   |  黃色  
1   |  綠色
3   |  100g 
3   |  60g
4   |  38m

那麼我們就可以這麼寫
以id分組,把spec欄位的值列印在一行,按照spec倒序排列


select id,group_concat(spec order by spec) from 規格表 group by id;  
|1 | 黃色,綠色|
|3 | 60g,100g|
|4 | 38m|

預設是以逗號分隔,我們也可以改成分號

select id,group_concat(spec separator `;`) from 規格表 group by id;  
|1 | 黃色;綠色|
|3 | 60g;100g|
|4 | 38m|

補充:

還可以用distinct去掉重複的數值,也可以多個欄位拼接

感受:

這個函式不復雜,只是感覺應該會經常用到,以前總是習慣篩選之後用程式拼接,其實有些多餘了.
使用場景視具體情況而定,這個都不是絕對的。希望對大家有幫助。

相關文章