代码之家  ›  专栏  ›  技术社区  ›  Success Man

如何在条件聚合mysql中添加where?[副本]

  •  -1
  • Success Man  · 技术社区  · 6 年前

    SELECT a.number, a.description, b.attribute_code, b.attribute_value 
    FROM items a 
    JOIN attr_maps b ON b.number = a.number WHERE a.number = AB123
    

    如果执行查询,结果如下:

    enter image description here

    我想得出这样的结果:

    enter image description here

    SELECT i.number, i.description,
           MAX(CASE WHEN am.attribute_code = 'brand' then am.attribute_value END) as brand,
           MAX(CASE WHEN am.attribute_code = 'model' then am.attribute_value END) as model,
           MAX(CASE WHEN am.attribute_code = 'category' then am.attribute_value END) as category,
           MAX(CASE WHEN am.attribute_code = 'subcategory' then am.attribute_value END) as subcategory
    FROM items i JOIN
         attr_maps am
         ON am.number = i.number
    WHERE i.number = AB123
    GROUP BY i.number, i.description
    

    它起作用了

    但我还是很困惑的补充 where 条件。所以我想它可以过滤品牌等

    我试着这样:

    SELECT i.number, i.description,
           MAX(CASE WHEN am.attribute_code = 'brand' then am.attribute_value END) as brand,
           MAX(CASE WHEN am.attribute_code = 'model' then am.attribute_value END) as model,
           MAX(CASE WHEN am.attribute_code = 'category' then am.attribute_value END) as category,
           MAX(CASE WHEN am.attribute_code = 'subcategory' then am.attribute_value END) as subcategory
    FROM items i JOIN
         attr_maps am
         ON am.number = i.number
    WHERE brand = 'honda'
    GROUP BY i.number, i.description
    

    存在错误 Unknown column 'brand' in 'where clause'

    1 回复  |  直到 4 年前
        1
  •  2
  •   EvE    6 年前

    更改查询的最后一部分

    WHERE brand = 'honda'
    GROUP BY i.number, i.description
    

    GROUP BY i.number, i.description
    HAVING brand = 'honda'