左连接右表的where子句(必须从右边返回NULL) - Oracle

时间:2014-06-06 07:26:35

标签: sql oracle null left-join where-clause

我有2个表ID和Comm。表格如下

 
ID                          
AppID   Name
1       James
2       John
.
.
100     Jeff

Comm
AppID  Comment
1      abc
1      def
1      pqr
2      abc
2      def
2      pqr
3      def

我想要ID(第一个表)和Comm(第二个表)中的所有appID我只想要那些等于 abc 的注释,其他的应该是NULL。

我正在使用以下查询,不知道如何过滤评论 abc 和Null

select id.appid,comm.comment
from id left join comm on
id.appid=comm.appid
where comm.comment = 'abc'

我知道我的逻辑错误,试图找出我应该改变的地方。 任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:5)

select id.appid,comm.comment
from id 
left join comm 
    on id.appid=comm.appid
    and comm.comment = 'abc'

答案 1 :(得分:1)

使用两个左连接,然后将它们联合起来。

select id.appid,comm.comment 
from id left join comm 
on id.appid=comm.appid 
where comm.comment = 'abc'
union
select comm.appid,comm.comment 
from comm  left join id
on idcomm.appid=id.appid
where comm.comment = 'abc'