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子句,但我不确定它应该是什么.
提前致谢!
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)
技术术语是"反加入".正常的内连接是"等连接".
| 归档时间: |
|
| 查看次数: |
2740 次 |
| 最近记录: |