【问题标题】:is there a way to make a join like that?有没有办法进行这样的加入?
【发布时间】:2021-08-27 08:05:02
【问题描述】:

我要吃饭 第一个

type nbD
PC 2

第二个

type nbF
PC 3
TAB 2

我想要这样的东西

type nbD nbF
PC 2 3
TAB null 2

【问题讨论】:

  • 请记住,对于如此小的样本量,对需求的许多不同猜测可能会产生看起来相同的结果。因此,如果您解释所需的逻辑,而不是期望我们从样本中推测出来,这会有所帮助。
  • 至少再添加一个 table1 行。一个在表 2 中没有匹配项。并相应调整预期结果。
  • 您已使用多种连接类型标记您的请求。你读过这些吗?你读过外连接是如何工作的吗?在这种情况下,您应该能够自己回答您的问题。

标签: sql left-join inner-join outer-join right-join


【解决方案1】:

您可以使用以下查询来实现。

此外,在向社区寻求帮助之前,请先做一些自己的研究。我相信如果您在 google 中搜索“SQL joins with example”,您会在第一个或第二个结果中得到这个。通过这种方式,您可以了解更多信息,并且如果您在此过程中遇到困难,那么您始终可以选择寻求帮助。

Select a.type, b.ndb, a.ndf
from tab2 a 
left join tab1 b on a.type = b.type

【讨论】:

  • 结果中包含的第一个表的不匹配列“nbD”是要求,所以左连接是正确的。
【解决方案2】:

你想在这里使用的是 FULL OUTER JOIN:

SELECT st.type_, ft.nbd, st.nbf
FROM second_table st
FULL OUTER JOIN first_table ft ON ft.type_ = st.type_;

输出:

type_ nbd  nbf
----- ---  ---
PC    2    3
TAB   null 2

请随时参考此DB Fiddle 自行检查:)

【讨论】:

    猜你喜欢
    • 2012-12-26
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 2021-05-18
    • 2022-12-06
    • 2015-04-09
    • 1970-01-01
    相关资源
    最近更新 更多