sql - 左连接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
有谁知道为什么?
解决方案
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.code
is null
,它不等于0
。
推荐阅读
- linux - ldap 代理 CN 区分大小写
- oracle - 在 Oracle 中创建索引是否会锁定表以进行读取?
- azure-active-directory - 401 未经授权调用我的 Azure Rest API
- swiftui - 如何从 ClosedRange 获取第一个日期和最后一个日期
? - python - 元类单例如何工作
- python - 使用 Tensorflow 生成随机布尔值
- google-sheets - 在 Google 表格中使用 {} 运算符加入 2 个动态范围
- python - TypeError:“BitStream”对象不能解释为整数
- python - How to properly nest many ttk.PanedWindow one in other?
- android - 如何在不重新启动服务的情况下将意图从片段发送到服务