我有两张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
有人知道为什么吗?
2条答案
按热度按时间vaj7vani1#
把条件放在
left join
房间里的一张tableon
合同条款left join
而不是在where
条款:环境条件
where
条款是强制性的,所以where
子句消除left join
空着回来,因为o.code
是null
,不等于0
.1hdlvixo2#
on条件用于联接表。其中条件是从联接结果中筛选记录。
下面将在d.id=o.day的条件下加入表,然后仅选择o.code=0的记录
为了在d.id=o.day和o.code=0两天加入,您需要在下面