访问SQL语法

时间:2017-04-06 06:36:34

标签: sql ms-access

我已经使用一些查询来创建Access - 数据库。它是一个帐户数据库,包含有关不同帐户的信息。特别是每个帐户的IBAN号码。

其中一个问题是,我们将数据库中的IBAN编号与导入的Id表中的IBAN编号进行比较:

SELECT CAMTaccounts.IBAN, CAMTaccounts.Comment
FROM CAMTaccounts LEFT JOIN Id ON CAMTaccounts.[IBAN] = Id.[IBAN]
WHERE (((Id.IBAN) Is Null));

我以为我理解SQL语言在某种程度上来自SQL Server,但是这句话,我无法理解。

对我而言,这相当于写作:

Select CAMTaccounts.*
From CAMTaccounts Left Outer Join Id On CAMTaccounts.IBAN = Id.IBAN
Where Id.IBAN Is Null

对我而言,这种加入没有任何意义。

但显然,我并没有正确理解这一点。 我希望,你们中的一些人可以向我解释我的错误逻辑。

感谢。

2 个答案:

答案 0 :(得分:3)

假设CAMTaccounts.IBAN具有值

A
B

Id.IBAN有值

B
C

然后这个查询WITHOUT WHERE子句输出类似这样的内容

`CAMTaccounts.IBAN` | `Id.IBAN`
 ---------------------------------
 A                  | NULL
 B                  | B

如果添加Where Id.IBAN Is Null子句,您可以轻松查看会产生什么结果。

因此,当CAMTaccounts列不包含IBAN列的值

时,此查询会为您提供Id.IBAN表的结果

答案 1 :(得分:2)

此查询将返回CAMTaccounts中没有匹配Id行的所有行。这称为反连接查询。过多的括号实际上没有意义,很可能是用工具生成的。