【问题标题】:MS-Access SQL : Join expression not supportedMS-Access SQL:不支持连接表达式
【发布时间】:2017-04-12 08:57:28
【问题描述】:

我有 2 个表 A 和 B。我想创建第三个表,C。C 必须包含 A 中但不在 B 中的每条记录,以及 A 和 B 中的每条记录。

我尝试了以下方法:

SELECT A.* INTO C FROM (A INNER JOIN B ON A.Id = B.Id) LEFT JOIN B ON A.Id = B.Id WHERE B.Id IS NULL;

但它给了我错误信息:JOIN expression not supported.

当只有INNER JOINLEFT JOIN 时,它可以完美运行。但是由于某种原因,当我将两者与括号结合时,它不起作用。

如果有帮助的话,我相信我正在使用 MS-Access 2013。 顺便说一句,我是 Access 和 SQL 新手。

【问题讨论】:

  • 根据documentation,您不能在外连接操作数中嵌套连接。但是(如在标准 SQL 中但未记录)您可以在 FROM 中使用 T A INNER JOIN U B as with , 其中 T 是基本名称或子选择。 , 计算 CROSS JOININNER JOIN ON 1=1 但绑定比 JOINs 松散。

标签: sql ms-access left-join inner-join


【解决方案1】:

正确的逻辑是:

SELECT A.* INTO C
FROM A LEFT JOIN
     B
     ON A.Id = B.Id
WHERE B.Id IS NULL;

您不需要两个连接。我的猜测是您的查询的问题是BFROM 子句中出现了两次,没有表别名。 MS Access 不知道第二个B 指的是什么。

【讨论】:

  • 感谢您的快速回复!我试过你的查询,它有效,C 包含仅在 A 中的记录,但由于某种原因不包含在 A 和 B 中的记录。
  • 好吧,我只需要删除WHERE,它运行良好,非常感谢!
猜你喜欢
  • 2010-10-13
  • 2018-05-22
  • 1970-01-01
  • 1970-01-01
  • 2014-08-11
  • 1970-01-01
  • 2015-04-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多