【问题标题】:What is the MS Access SQL equivalent of FULL OUTER JOIN with a.key IS NULL and b.key IS NULL什么是与 a.key IS NULL 和 b.key IS NULL 的 FULL OUTER JOIN 等效的 MS Access SQL
【发布时间】:2020-04-04 01:57:38
【问题描述】:

示例查询,我想在 MS Access SQL 中执行:

SELECT *
FROM TableA AS a
FULL OUTER JOIN TableB AS b
ON a.key = b.key
WHERE a.key IS NULL
OR b.key IS NULL

由于 MS Access SQL 不允许 FULL OUTER JOIN,我尝试使用下面的代码,但结果不正确。

SELECT *
FROM (TableA AS a
LEFT JOIN TableB AS b
ON a.key = b.key)
RIGHT JOIN TableB AS c
ON a.key = c.key
WHERE b.key IS NULL
OR a.key IS NULL

有谁知道如何构建我试图执行的上述示例查询的 MS Access SQL 等效项?

【问题讨论】:

    标签: sql ms-access jet-sql


    【解决方案1】:

    用途:

    select . . . 
    from a
    where not exists (select 1 from b where b.key = a.key)
    union all
    select . . .
    from b
    where not exists (select 1 from a where a.key = b.key);
    

    . . . 用于您想要的列。

    如果你使用过,你可以使用*

    select a.*, b.*
    from a left join
         b
         on 1 = 0
    where not exists (select 1 from b where b.key = a.key)
    union all
    select a.*, b.*
    from b left join
         a
         on 1 = 0
    where not exists (select 1 from a where a.key = b.key);
    

    【讨论】:

    • 这行得通!非常感谢!但我想知道,我什么时候会使用其中一个?它只是偏好还是存在性能差异或其他我不知道的东西?再次感谢!
    • @KristinWong 。 . .如果您愿意列出列,请使用第一种形式。第二种只是您使用* 的一种方式,因此您不必列出列名。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 2021-11-29
    • 1970-01-01
    • 2015-09-22
    相关资源
    最近更新 更多