如何获取与子查询中的所有值匹配的列值?
这是我的表:
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)
如果我理解正确,您需要的颜色与给定城市相同的城市名称。如果是这样,您可以使用连接和聚合:
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');