如何在SQL中按相同taxonomy列值分组拼接对应的name列内容
问题解答
错误原因
你使用GROUP_CONCAT聚合函数时未添加GROUP BY分组规则,SQL默认会把所有匹配条件的行的name字段值全部拼接到同一条结果中,不会按taxonomy维度拆分聚合。
修正后的SQL语句
SELECT wp.id, wp.post_title, tt.taxonomy, GROUP_CONCAT(t.name) AS attribute_values FROM wp_posts wp INNER JOIN wp_term_relationships r ON wp.ID = r.object_id INNER JOIN wp_term_taxonomy tt ON r.term_taxonomy_id = tt.term_taxonomy_id INNER JOIN wp_terms t ON t.term_id = tt.term_id WHERE tt.taxonomy like 'pa_%' -- 按商品ID、标题、属性分类三个字段分组,确保同一个商品下相同taxonomy的name被聚合 GROUP BY wp.id, wp.post_title, tt.taxonomy;
可选优化配置
- 若需对拼接的
name去重,可修改聚合部分为GROUP_CONCAT(DISTINCT t.name) - 若需自定义拼接分隔符,可指定SEPARATOR参数,例如用竖线分隔:
GROUP_CONCAT(t.name SEPARATOR '|') - 若需按固定顺序拼接name,可添加ORDER BY规则:
GROUP_CONCAT(t.name ORDER BY t.name ASC)
内容的提问来源于stack exchange,提问作者thepylot
相关产品推荐
相关产品推荐

