MySQL GROUP_CONCAT(DISTINCT)分组查询propKey丢失问题咨询
问题解决方法
问题出在你对pp.id使用了DISTINCT关键字——虽然product_prop表中两条Color属性的记录name值相同,但id是完全独立的唯一值,不需要通过DISTINCT去重。你当前的写法中,不必要的DISTINCT干扰了聚合逻辑,导致部分id未被正确拼接。
修正后的SQL语句如下:
SELECT p.id, p.name AS propName, GROUP_CONCAT(DISTINCT pp.name SEPARATOR ',') AS propValue, GROUP_CONCAT(pp.id SEPARATOR ',') AS propKey -- 移除DISTINCT FROM properties p INNER JOIN product_prop pp ON p.id = pp.prop WHERE pp.product in (171243, 127865) GROUP BY p.id, p.name;
说明:
propValue保留DISTINCT是合理的,用于合并同一属性下的不同值,避免重复显示相同属性值。propKey移除DISTINCT后,会将该属性对应的所有product_prop记录的id全部拼接,无论name是否重复。
执行修正后的语句后,Color对应的propKey会显示为2,5,符合预期。
内容的提问来源于stack exchange,提问作者KissGe
相关产品推荐
相关产品推荐

