首先,我拿到了大概这样一堆数据,但是呢 我要把某一个字段的所有值拼接起来。
之前大家应该都写过 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。
具体细节可以搜索这个函数。
?
本文介绍如何在SQL中使用group_concat函数来拼接多个字段值,通过实例展示了如何根据不同的条件筛选并拼接数据,适用于需要汇总多个相关字段的情况。
816

被折叠的 条评论
为什么被折叠?



