左外连接,最终查询没有结果

Posted

技术标签:

【中文标题】左外连接,最终查询没有结果【英文标题】:Left Outer Join, No result in final query 【发布时间】:2013-05-10 21:49:31 【问题描述】:

我正在执行以下查询

Select * from A a left outer join B b on (b.id = a.id)

我从 A 获得了一条记录,但没有从 B 获得记录。我希望在最终选择查询中有一条记录,但没有得到。

这是一些示例数据:

一个

v_id, id,      date,      d_id
1,    1244578, 02-MAR-11, 1827877

B,没有数据显示:

e_id,id,amount

我做错了什么?我怎样才能做到这一点?

【问题讨论】:

请显示一些记录 记录是这样的 A(v_id,id,date,d_id) (1,1244578,02-MAR-11,1827877) AND B(e_id,id,amount)[没有数据] @KrantiKumarMishra - 我们不是在谈论输出数据。我们正在讨论输入数据。 或者您正在运行不同的查询或在不同的表上或在表中不是您正在考虑的事情。 【参考方案1】:

您从表 A 中获得了一条记录,这是因为表 A 只有一条记录,而表 B 没有记录。 在第一个表的左外连接内容中显示与第二个表的结果连接,但在您的情况下,第二个表没有记录,因此最终结果显示该记录的空值。

【讨论】:

【参考方案2】:

这应该可以正常工作:

Select *
from A a 
left outer join B b on b."id" = a."id"

在这里查看它的实际效果:

SQL Fiddle Demo

这会给你:

| V_ID |      ID |      DATE |    D_ID |   E_ID | AMOUNT |
----------------------------------------------------------
|    1 | 1244578 | 02-MAR-11 | 1827877 | (null) | (null) |

【讨论】:

以上是关于左外连接,最终查询没有结果的主要内容,如果未能解决你的问题,请参考以下文章

添加 2 表条件时,Oracle 左外连接停止返回结果

分页结果集中的选择子查询或左外连接哪个更快

与子查询相比,为啥左外连接查询给出不同的结果?

结合左外连接和内连接 + 聚合函数 - 空结果集问题

Hive SQL 多个左外连接查询在其结果中缺少记录

SQL'左外连接与2个右表