【问题标题】:SQL Query Return All Results from Table A and Only Results from Table B that are not included in Table ASQL 查询返回表 A 中的所有结果,仅返回表 B 中未包含在表 A 中的结果
【发布时间】:2019-06-26 20:25:28
【问题描述】:

我正在尝试查询两个表并返回一个结果集,其中包括表 A 中的所有值以及表 B 中未包含在表 A 中的值。

Table A        Table B
ID  Name       ID  Name
A   John       C   Drew
B   Jacob      D   Shane
C   Nancy

根据 ID 列,结果集应该是:

ID  Name
A   John
B   Jacob
C   Nancy
D   Shane

我会从结果集中排除表 B 中的 ID C,因为表 A 有一条 ID 为 C 的记录。

有谁知道我将如何开始做到这一点?

【问题讨论】:

  • @philipxy - 我看了帖子。 Union/Union All 根据被复制行的所有值删除重复项。在这种情况下,只有 ID 重复,但我想返回第一个 Table 的结果,而不是第二个。
  • 谢谢。你对你想要什么的描述不是你想要的,所以它不应该在那里,你对你的例子的描述也不是你想要什么的陈述,所以你应该说你想要什么。所以这还不清楚,这是关闭和否决投票的另一个原因。如果你清楚地写出(许多措辞)你想要什么,你可以推理,谷歌搜索并询问部分和整体。否则,你不能。观察接受的答案是如何结合联合(明显的常见问题解答)和在一个表中查找与另一个表不匹配的行(明显的常见问题解答)。

标签: sql join union


【解决方案1】:

您可以使用union allnot exists 来做到这一点:

select a.id, a.name
from a
union all
select b.id, b.name
from b
where not exists (select 1 from a where a.id = b.id);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多