MYSQL Multidimensional Group_Concat基于2个限定符

时间:2014-05-13 14:50:43

标签: php mysql join group-concat

这是我的数据

enter image description here

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

optics_finish:3673|optics_reticle:3923,3924

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

optics_finish:3673|optics_reticle:3923|optics_reticle:3924

但问题是我无法重复属性代码。我需要一个组内的一个组,我不断收到错误无效使用组功能。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

如果您发布您使用的查询,那将非常有用,但无论如何......我想我能够通过以下查询获得您正在寻找的结果

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 ','并非真的有必要,但我喜欢明确。随意删除它

结果:

data_id    concatMess
   1    manufacturer:148
   2    optics_finish:3673|optics_reticle:3923,3924

答案 1 :(得分:0)

这是你需要的吗?

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