2016-07-28 40 views
0

可以說,我有以下兩列(品牌&顏色)的值是:窗口分區用VARCHAR

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

我只關心賣出粉紅色或藍色的汽車品牌。 什麼類型的窗口函數可以讓我只撤回三條'福特'記錄,因爲福特有一輛粉色/藍色車。和兩個吉普車記錄。 (我不想看到任何chevy記錄)。 謝謝

回答

1

您應該對顏色條件的品牌列做一個獨特的查詢。您將獲得可查詢的品牌列表。然後將此結果與基於品牌的正常表結合。然後獲得記錄。

換句話說

您需要使用不同品牌的子查詢,並且是內部連接到你的正常的表

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

閱讀英文此查詢條件:選擇所有品牌等於所有品牌粉紅色或藍色的記錄。