我有两个表,我想加入它们(外部(。
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 join
的on
子句中而不是where
子句中left join
ed表上:
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.code
是null
,不等于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