找出所有有红球和蓝球的罐子

问题描述

通过这个简单的查询,我可以找到包含红球蓝球的所有罐子的 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'))