【问题标题】:How to select field with particular value or null from joined table如何从联接表中选择具有特定值或空值的字段
【发布时间】:2012-10-04 18:50:11
【问题描述】:

也许我的描述有点模糊:) 我想对两个表进行外部联接,并选择一个字段具有某些值或为空的记录 我最初的概念是

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')
忽略其他条目

【问题讨论】:

  • 您的问题到底是什么?你想完成什么?

标签: sql


【解决方案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 )

读完 cmets 后去掉左外层

【讨论】:

    【解决方案2】:

    这是你想要的吗?

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

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

    【讨论】:

    • 你应该把==改成=
    • 不,我想要字段 B 中的字段 y,即使它为空,我使用 '==' 而不是 '=' 只是错字,我使用的 java 比 sql 多得多,所以我更习惯== 声明:)
    • 好吧,你说的问题是“它从 B 表而不是从加入的表中获取 B.y”如果你想要 B 表中的 B.y,那么你的问题是什么?
    • @Beth,我的意思是,我的查询给了我内部连接的功能
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    相关资源
    最近更新 更多