左连接oracle db

jucafojl  于 2021-08-09  发布在  Java
关注(0)|答案(2)|浏览(334)

我有两张table,我想和他们一起(在外面)。

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

我想要这张table作为结果:

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

有人知道为什么吗?

vaj7vani

vaj7vani1#

把条件放在 left join 房间里的一张table on 合同条款 left join 而不是在 where 条款:

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 .

1hdlvixo

1hdlvixo2#

on条件用于联接表。其中条件是从联接结果中筛选记录。
下面将在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

相关问题