【问题标题】:Why am I loosing table data from adding additional join statement in SQL Server?为什么我在 SQL Server 中添加额外的连接语句会丢失表数据?
【发布时间】:2014-05-11 11:50:54
【问题描述】:

所以我有一个表 X,假设它有 50 行数据,它正在连接到另一个只有 2 行的表。当我“正常”JOIN 它们在一起时,只会显示重叠数据,即在 50 的较大集合中找到的两行数据。在我的情况下,我希望所有 50 行都保留,所以我使用 LEFT JOIN我按计划返回了所有 50 行。

现在我想开始在其他表中添加和加入以获取有关这些行的其他数据并让它们一起显示,只要没有数据,我就可以得到 null。现在我要添加一个新的JOIN,它只会查找这两行的数据,而不是其他 48 行的数据,这非常好,我希望在找不到匹配项的地方显示 NULL。我的问题是,不是那样做,而是显示空值,而是删除 48 行将完全在其列中的部分空数据,只显示匹配的两个,为什么?

如果需要我可以提供代码,我认为这可能更容易理解。

【问题讨论】:

  • 是的,请提供代码。不过,听起来你想让所有的连接都左连接。
  • 你说得对,我需要继续使用左连接。新手错误,谢谢。

标签: sql sql-server tsql join left-join


【解决方案1】:

如果你inner join第三个表,只有2行可以匹配(我假设你不匹配空值)。第二个表中只有 2 行包含非空值,因此如果您对第三个表执行 inner join,则只有这 2 行可以产生结果。

在这种情况下,您将需要另一个 left join。这将返回第二个表中的所有行,包括所有为空的行(作为第一个 left join 的结果)。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-07-16
  • 2011-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-20
相关资源
最近更新 更多