首页 > 解决方案 > 如何计算多个类别中的品牌

问题描述

老实说,我不确定要搜索什么来自主回答我的问题,而且我的 SQL 知识令人厌恶。

如何修改我的 SQL 查询;展示存在于 3 个或更多类别中的不同品牌,以及它们所主持的类别?

例如,耐克应该只显示;因为三星仅存在于 2 个类别中。

SELECT      DISTINCT(brand),
            category
FROM        products
ORDER BY    category, 
            brand
Brand | category
-----------------
Nike    | Baby
Nike    | Footwear
Nike    | Pets
Samsung | TVs
Samsung | Baby

拥有谷歌我认为有一个子查询的概念,我可能需要一个 HAVING :s

标签: mysql

解决方案


如果您在子句group by brand中设置条件,您可以获得品牌:having

select brand 
from products
group by brand
having count(distinct category) >= 3

如果您还希望类别使用上述查询作为带有运算符 IN 的子查询:

select distinct brand, category
from products
where brand in (
    select brand 
    from products
    group by brand
    having count(distinct category) >= 3
)

distinct如果没有重复的情况,请删除。


推荐阅读