代码之家  ›  专栏  ›  技术社区  ›  Gabriel Solomon

mysql查询不同分组方式

  •  0
  • Gabriel Solomon  · 技术社区  · 14 年前

    您好,我有一个products表,其中包含普通产品和可配置产品

    它的基本结构是:

    • 身份证件
    • 名称
    • 价格
    • 可配置('是','否')
    • ID U配置

    普通产品的ID配置为“否”和“0”,可配置产品的ID配置值设置为“是”,并且具有相同的ID配置值。

    当前查询是:

    SELECT `products`.* 
    FROM `products`, `categories`, `product_categories` 
    WHERE `categories`.`id` = 23 AND 
          `products`.`id` = `product_categories`.`id_product` AND 
          `categories`.`id` = `product_categories`.`id_category` AND 
          `products`.`active` = 'yes' 
    ORDER BY `pos_new` ASC, `created` DESC LIMIT 0,20
    

    我想知道是否有一种方法可以按id_配置进行分组,但只针对可配置的产品。原因是我只想在搜索中显示一个配置产品。 我想我可以加入,但想知道是否有办法做一些特殊的团体。 例如,对于configurable yes,字段应该是id_configuration,否则应该是id字段

    非常感谢你的建议

    1 回复  |  直到 14 年前
        1
  •  1
  •   Victor Stanciu    14 年前

    您可以在GROUP BY子句中使用CASE语句,如果GROUP BY ID_配置为“是”,则可以使用GROUP BY ID配置;如果不是,则可以使用唯一的GROUP BY ID配置(因此相当于不分组)。

    SELECT * FROM `products` 
    GROUP BY CASE `configurable` WHEN 'yes' THEN `id_configuration` ELSE `id` END