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
1 回答
你可以使用选择形式连接表并计算不同颜色的数量