首页 > 解决方案 > 左连接oracle db

问题描述

我有两张桌子,我想加入他们(外)。

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

有谁知道为什么?

标签: sqloraclejoinselectleft-join

解决方案


left join只需将ed 表的条件放在 the的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.codeis null,它不等于0


推荐阅读