问题描述
通过这个简单的查询,我可以找到包含红球或蓝球的所有罐子的 ID:
SELECT id FROM "Jars" J
JOIN "Balls" B ON B.jarId = J.jarId
WHERE B.color = 'red' OR B.color = 'blue'
GROUP BY id
如何找到包含红球和蓝球的所有罐子的 ID?
解决方法
如果两者都需要,那就试一试:
same target - Bridging-Header.h
different targets - .modulemap
,
您不需要子查询。您甚至不需要 JOIN,因为您只需要罐子的 ID(可在 balls
表中找到)
select b.jarid
from balls b
where b.color in ('blue','red')
group by b.jarid
having count(*) = 2
请注意,这也会返回具有其他颜色(例如蓝色、红色和黄色)的球。
如果您只想要那些具有完全蓝色和红色的颜色,您可以使用这个:
select jarid
from balls
group by jarid
having count(*) = 2
and bool_and(color in ('blue','red'))