左加入甲骨文数据库



我有两个表,我想加入它们(外部(。

day  description
-----
1     mo
2     tu
...
5     fr

order   day     code
----      
1       1         0
2       2         0
3       1         2
4       3         0
5       4         0

结果,我想把这张表变成这样:

description       order         code 
------
mo                  1           0
th                  2           0 
we                  4           0
tu                  5           0
fr                  null        null

当我像这样使用左连接时,代码无法正常工作,并且不会显示星期五:

select * 
from days d left join order o on d.id= o.day
where o.code = 0

但是当我像这样编写代码时,代码工作正常:

select *
from 
(select * from day) d
left join
(select * from order when code = 0) o
on d.id = o.day

有谁知道为什么?

只需将条件放在left joinon子句中而不是where子句中left joined表上:

select d.description, o.order, o.code
from days d 
left join order o on d.id= o.day and o.code = 0

where子句中的条件是强制性的 - 因此where子句消除了left join返回空的行,因为o.codenull,不等于0

条件用于连接表。 其中条件是从联接结果中筛选记录。

下面将在 d.id = o.day 的条件下加入表格 然后选择仅 O.code=0 的记录

select * 
from days d left join order o on d.id= o.day
where o.code = 0

为了在两个 d.id = o.day 和 o.code=0 上加入 您需要以下

select * 
from days d left join order o on d.id= o.day
and o.code = 0

最新更新