首先,我拿到了大概這樣一堆資料,但是呢 我要把某一個字段的所有值拼接起來。
之前大家應該都寫過 count sum等聚合函數,直接将值進行加減求數量等操作。
但是将值拼起來似乎很難。
原始sql
SELECT
app_works.uuid,
app_works.length,
app_works.can_sell,
app_works.`status`,
app_works.collect_count,
app_category.`name`
FROM
cooperation_cooperationwork
LEFT JOIN app_works ON app_works.uuid = cooperation_cooperationwork.work_id
LEFT JOIN app_works_categories ON app_works_categories.works_id = app_works.uuid
LEFT JOIN app_category ON app_works_categories.category_id = app_category.id
WHERE
cooperation_cooperationwork.cooperation_id = 'a1ff8fe15a7c11e9a0c398039b157b36'
結果如下:
其中呢,一首歌對應有很多很多的标簽,标簽還分有類型,我們想把标簽分别剔出來。
group_concat
這個函數很神奇 可以将資料拼起來。還可以指定分隔符,和排序方式。
後來的sql(敏感内容已改為xxx)。
SELECT
app_works.uuid,
app_works.length,
app_works.can_sell,
app_works.`status`,
app_works.collect_count,
group_concat( IF ( app_category.tree_id = x, app_category.`name`, null ) SEPARATOR ',' ) 風格,
group_concat( IF ( app_category.tree_id = x, app_category.`name`, null ) SEPARATOR ',' ) 情緒,
group_concat( IF ( app_category.tree_id = x, app_category.`name`, null ) SEPARATOR ',' ) 配器,
group_concat( IF ( app_category.tree_id = x, app_category.`name`, null ) SEPARATOR ',' ) 節奏
FROM
cooperation_cooperationwork
LEFT JOIN app_works ON app_works.uuid = cooperation_cooperationwork.work_id
LEFT JOIN app_works_categories ON app_works_categories.works_id = app_works.uuid
LEFT JOIN app_category ON app_works_categories.category_id = app_category.id
WHERE
cooperation_cooperationwork.cooperation_id = 'xxx'
GROUP BY cooperation_cooperationwork.id
結果如下:
記得别忘記 group by。
具體細節可以搜尋這個函數。
?