2015-04-29 44 views
0

如何獲取匹配子查詢中所有值的列值?如何使列的值與子查詢中的所有值匹配

這裏我表:

Table P 
p# - pname - color - city 
1 - nut - Red - London 
2 - Bolt - Green - Paris 
3 - Screw - Blue - Rome 
4 - Cam - Blue - Paris 
... 

例如,如果我想這有一塊(P)相同顏色的城市的名字嗎?

我在想這個查詢:

SELECT city 
FROM P 
WHERE city = 'blue'; 

當然,它的欺騙,因爲我只有幾行,那麼你如何編寫一個查詢,可以概括呢?

*可能使用EXISTS或NOT EXISTS?

+0

您能否提供樣本數據*和*所需的輸出?此外,您的問題使用「隱藏」一詞,這是沒有道理的。 –

+0

說城市='藍色'是沒有意義的,但我不確定這是不是因爲混淆'where'子句的作用。 – shawnt00

回答

0

如果我理解正確,你想要的顏色是一個給定的城市相同的城市的名稱。如果是這樣,您可以使用加入和彙總:

select p.city 
from P p join 
    P p1 
    on p1.city = 'Rome' and 
     p1.city <> p.city and 
     p1.color = p.color 
group by p.city 
having count(distinct color) = (select count(distinct color) from p where city = 'Rome'); 
相關問題