首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于2个限定符的MYSQL多维Group_Concat

基于2个限定符的MYSQL多维Group_Concat
EN

Stack Overflow用户
提问于 2014-05-13 14:50:43
回答 2查看 93关注 0票数 0

这是我的数据

我需要按data_id分组并运行select查询,以便以这种方式返回数据,并以data_id=2为例。

代码语言:javascript
复制
optics_finish:3673|optics_reticle:3923,3924

使用group_concat,我成功地获得了所有数据,但它返回如下:

代码语言:javascript
复制
optics_finish:3673|optics_reticle:3923|optics_reticle:3924

但问题是我不能重复属性代码。我需要一个组内的一个组,我总是得到一个错误,无效的使用一个组的函数。

谢谢你的帮忙!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-13 15:25:43

如果你发布你使用过的查询会非常有帮助,但是无论如何.我想我可以通过下面的查询获得您想要的结果

代码语言:javascript
复制
SELECT data_id, GROUP_CONCAT(CONCAT_WS(':', attribute_code, IDs) SEPARATOR '|') AS concatMess
FROM 
(
    SELECT data_id, attribute_code, GROUP_CONCAT(attribute_id SEPARATOR ',') AS `IDs` 
    FROM data 
    WHERE 1 
    GROUP BY attribute_code
) sq 
GROUP BY data_id;

注意:SEPARATOR ','并不是真正必要的,但我喜欢明确。请随意移除。

结果:

代码语言:javascript
复制
data_id    concatMess
   1    manufacturer:148
   2    optics_finish:3673|optics_reticle:3923,3924
票数 2
EN

Stack Overflow用户

发布于 2014-05-13 15:18:04

这就是你需要的吗?

代码语言:javascript
复制
select data_id,
       concat_wc('|',
                 group_concat(case when attribute_code = 'optics_finish' then attribute_id end),
                 group_concat(case when attribute_code = 'optics_reticle' then attribute_id end)
                ) as attributes
from table t
group by data_id
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23634625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档