SQL Join使用'unless'子句

Ale*_*ley 1 sql join oracle10g

我不太确定这叫做什么,但我花了一些时间思考它,我不知道如何处理它.我确信这很简单.

我有两张桌子,foo和bar.他们是这样的:

Foo表:

 | id | name
 --------------
 | 1  | blah
 | 2  | blarg
 | 3  | blag
Run Code Online (Sandbox Code Playgroud)

条形图表(baz的含义无关紧要):

 | fooId | baz |
 ---------------
 |   1   | 100 |
 |   1   | 94  |
 |   1   | 27  |
 |   2   | 94  |
 |   3   | 19  |
Run Code Online (Sandbox Code Playgroud)

所以,每个Foo多个Bars.我想选择所有他们的baz为94的Foos,除非他们的baz为100.所以在上面的例子中我只想选择id为2的Foo.

我试着按照以下方式做一些事情:

SELECT id FROM foo 
LEFT JOIN bar 
ON foo.id = bar.fooId
WHERE bar.baz = 94
AND bar.baz != 100
Run Code Online (Sandbox Code Playgroud)

但很明显,到目前为止只有我.我确定这里可能有某种group by子句,但我不确定它应该是什么.

提前致谢!

编辑:如果其他人有这个问题,正如@iu所提到的,这个术语是反连接.

ʞɔı*_*ɔıu 6

select id from foo
inner join bar b1 on b1.fooId=foo.id and b1.baz=94
left outer join bar b2 on b2.fooId=foo.id and b2.baz=100
where b2.fooId is null
Run Code Online (Sandbox Code Playgroud)

技术术语是"反加入".正常的内连接是"等连接".