窗口分区用VARCHAR

问题描述:

可以说,我有以下两列(品牌&颜色)的值是:窗口分区用VARCHAR

brand color 
ford blue 
ford pink 
ford yellow 
chevy green 
chevy white 
chevy yellow 
jeep blue 
jeep green 

我只关心卖出粉红色或蓝色的汽车品牌。 什么类型的窗口函数可以让我只撤回三条'福特'记录,因为福特有一辆粉色/蓝色车。和两个吉普车记录。 (我不想看到任何chevy记录)。 谢谢

您应该对颜色条件的品牌列做一个独特的查询。您将获得可查询的品牌列表。然后将此结果与基于品牌的正常表结合。然后获得记录。

换句话说

您需要使用不同品牌的子查询,并且是内部连接到你的正常的表

select t1.* 
from t1 
inner join (
    select distinct brand 
    from t1 
    where color in ('pink', 'blue') 
) as t2 on t2.brand = t1.brand 

SELECT * 
FROM t1 
WHERE brand in (
       SELECT brand 
       FROM t1 
       WHERE color in ('pink', 'blue') 
       ) 

阅读英文此查询条件:选择所有品牌等于所有品牌粉红色或蓝色的记录。