如何用MySQL查询合并同一EAN的多分类,实现EAN唯一?
如何用MySQL实现将同一EAN的多分类合并为单条记录?
完全可以通过MySQL内置函数实现这个需求,核心是借助GROUP_CONCAT()聚合同一EAN对应的所有分类,配合GROUP BY保证EAN唯一性。
假设你的表名为product_categories,执行以下SQL查询即可:
SELECT ean, GROUP_CONCAT(cat SEPARATOR '|') AS cat FROM product_categories GROUP BY ean;
关键说明:
GROUP_CONCAT(cat SEPARATOR '|'):将同一分组(同一EAN)下的所有cat值用|拼接成单个字符串;若不指定SEPARATOR,默认用逗号分隔,这里显式指定为|匹配需求。GROUP BY ean:按ean字段分组,确保每个EAN仅返回一条记录。
示例验证:
原始数据:
9791023507133; category1 9791023507133; category2 9791036317309; category1 9782745929334; category1 9782081286603; category1 9782745943835; category1
执行上述SQL后,得到目标结果:
9791023507133 | category1|category2 9791036317309 | category1 9782745929334 | category1 9782081286603 | category1 9782745943835 | category1
额外注意:
GROUP_CONCAT()有默认长度限制(默认1024字节),若分类过多导致拼接字符串超长,可临时调整会话参数:
SET SESSION group_concat_max_len = 10000;
该设置仅在当前会话生效,如需全局生效需修改MySQL配置文件。
内容的提问来源于stack exchange,提问作者Anatole
相关产品推荐
相关产品推荐

