Oracle select查询问题

时间:2011-12-29 17:15:48

标签: sql oracle10g

我有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'

你能帮我解决一下正确的问题吗?

2 个答案:

答案 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条目。

相关问题