首页 文章

MySQL查询得到的产品有多种颜色和按颜色数量的产品订购

提问于
浏览
0

我有一个表产品(id,name)与表颜色(id,name)和1表product_color(product_id,color_id)有n-n关系 . 我如何查询所有产品可以有多种颜色(例如我想查询产品可以有红色,绿色,蓝色)并按颜色重合顺序排序(产品有3种颜色红色,绿色,蓝色将是第一个,然后产品与最后2色和1色)

1 回答

  • 1

    你可以使用选择形式连接表并计算不同颜色的数量

    select prod_name, count(distinct color_name)
      from ( 
    
            select 
                  a.id  prod_id
                , a.name prod_name
                , b.id color_id
                , b.name color_name
            from product a
            inner join product_color c on a.id  = c.product_id
            inner join color b on b.id = c.color_id
            where b.name in ('red', 'green', 'blue')
    
      ) t 
      group by prod_name
      order by count(distinct color_name) desc
    

相关问题