2016年1月18日 星期一

MySQL GROUP_CONCAT()

在兩個關聯資料表 ,一對多對應的情況使用 join 時,常會用 GROUP BY 取得不重覆的資料,此時若想取得重覆列某個欄位所有的值,可使用 GROUP_CONCAT() 函式

例如:
bb 資料表,商品列表
b_idb_name
1綠茶
2麵包

uu 資料表,訂購資料
u_idb_id
12
11
32
41
51


要一次列出個別商品訂購的 u_id,可使用 GROUP BY 配合 GROUP_CONCAT()
SELECT bb.* , GROUP_CONCAT( uu.u_id ) 
FROM bb
LEFT JOIN uu ON ( uu.b_id = bb.b_id ) 
GROUP BY bb.b_id
結果:
b_idb_nameGROUP_CONCAT( uu.u_id )
1綠茶1,4,5
2麵包1,3
GROUP_CONCAT( uu.u_id ) 取得的值或需要再篩選,也可以再使用 HAVING 配合 FIND_IN_SET 過濾資料。


沒有留言:

張貼留言