mysql 一个字段多条记录的拼接
首先,我拿到了大概这样一堆数据,但是呢 我要把某一个字段的所有值拼接起来。
之前大家应该都写过 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。
具体细节可以搜索这个函数。
????