2012-10-04 63 views
0

也许我的描述是有点飘渺:) 我想要做的两个表外连接,并选择记录,其中一个领域有一定的价值或为空 我原来的概念是如何从连接表特定值或空选择字段中

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表采取通过不加入
是任何简单的解决办法我可怎么办呢?

我需要的是选择行,其中通过名为 'abc' 或空,即:
(1, 'ABC')
(2,空)

,而我的查询给我的功能内有结果加入

(1, 'ABC')
忽略了其他项

+1

究竟什么是你的问题?你想达到什么目的? – LittleBobbyTables

回答

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) 

阅读评论只是删除左外后

0

这是你想要的吗?

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

如果您在您的评论说,你得到内部联接的结果,而不是你的预期外连接,这是因为你的WHERE子句中引用你的外表。 您需要将参考移动到连接。

+0

你应该用'=' – Lamak

+0

nope来更改'==',即使它是空的,我也想从字段B中获得字段y,而我使用'=='而不是'='只是打字错误,即时通讯使用比sql更多的java,所以我更习惯==声明:) – user902383

+2

好吧,你说问题是“它从B表中取出不是来自加入”如果你想从B表中得到By,那么你的问题是什么? – Beth

相关问题