左连接oracle db

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

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

  1. day description
  2. -----
  3. 1 mo
  4. 2 tu
  5. ...
  6. 5 fr
  7. order day code
  8. ----
  9. 1 1 0
  10. 2 2 0
  11. 3 1 2
  12. 4 3 0
  13. 5 4 0

我想要这张table作为结果:

  1. description order code
  2. ------
  3. mo 1 0
  4. th 2 0
  5. we 4 0
  6. tu 5 0
  7. fr null null

当我使用像这样的左连接时,代码不能正确工作,并且不会显示:

  1. select *
  2. from days d left join order o on d.id= o.day
  3. where o.code = 0

但是当我这样写代码的时候,代码是正确的:

  1. select *
  2. from
  3. (select * from day) d
  4. left join
  5. (select * from order when code = 0) o
  6. on d.id = o.day

有人知道为什么吗?

vaj7vani

vaj7vani1#

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

  1. select d.description, o.order, o.code
  2. from days d
  3. 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的记录

  1. select *
  2. from days d left join order o on d.id= o.day
  3. where o.code = 0

为了在d.id=o.day和o.code=0两天加入,您需要在下面

  1. select *
  2. from days d left join order o on d.id= o.day
  3. and o.code = 0

相关问题