如何从连接表中选择具有特定值或null的字段

时间:2012-10-04 18:50:12

标签: sql

也许我的描述有点朦胧:) 我想在两个表上进行外连接,并选择一个字段具有某个值或为空的记录 我原来的概念是

select A.x,B.y 
from A 
left outer join B 
    on A.id= B.a_id 
where b.y ='abc' 
    or b.y is null

然后我意识到它从B桌上拿走了B.y而不是从加入的 如何轻松解决我怎么做?

我需要的是选择行,其中B.y是' abc'或null,即:
(1,' ABC')
(2,NULL)

虽然我的查询给了我带结果的内部联接功能

(1,' ABC')
忽略其他条目

2 个答案:

答案 0 :(得分:1)

是吗

select A.x,B.y from A left outer join B on A.id= B.a_id and ( b.y ='abc' or b.y is null )

阅读评论后,只需删除左外

答案 1 :(得分:0)

这就是你想要的吗?

    select A.x,b.y 
    from A 
    left outer join B 
        on A.id= B.a_id and
        b.y ='abc'

正如您在评论中所说,如果您获得内部联接结果而不是预期的外部联接,那是因为您在where子句中引用了外部表。 您需要将引用移动到连接。