这是我的数据



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

optics_finish:3673|optics_reticle:3923,3924


使用group_concat,我已成功获取所有数据,但返回的结果如下:

optics_finish:3673|optics_reticle:3923|optics_reticle:3924


但事实是我无法重复属性代码。我需要一个组中的一个组,并且不断收到错误消息:无效使用了组功能。

谢谢你的帮助!

最佳答案

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

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

08-03 19:37