我有2张桌子。表A只有一个名为ID的列,它有一个Ids 1,2 ... n列表 表B有3列:ID(表A中的引用ID列);核心价值 所以表B是这样的:
ID KEY VALUE
1 x true
1 y false
1 z true
2 x false
2 y false
2 z false
.. ..... 因此,表A中的每个ID在表B中有3个条目 我需要一个从表A中获取所有ID的查询,其中x,y和z都在表B中标记为false。因此,如果特定Id的x,y,z中的任何一个为真,我们就不会选择它。 我试过这个,但这是错的:
select A.id from A,B where A.id = B.id and B.key in ('x','y','z') and B.value = 'false'
你能帮我解决一下正确的问题吗?
答案 0 :(得分:1)
几乎就在那里:
select A.id
from A,B
where A.id = B.id and B.key in ('x','y','z') and B.value = 'false'
group by A.id
having count(distinct B.key)=3
答案 1 :(得分:0)
select id from a where a.id not in (select id from b where value = 'true')
应该做的伎俩
它假设每个id都有一个x,y和z条目。