是否可以在Access中的连接条件中使用子查询?

Jof*_*sey 10 sql ms-access join ms-access-2007 left-join

在postgresql中,我可以在连接条件中使用子查询

SELECT * 
FROM table1 LEFT JOIN table2
     ON table1.id1 = (SELECT id2 FROM table2 LIMIT 1);
Run Code Online (Sandbox Code Playgroud)

但是当我尝试在Access中使用它时

SELECT *
FROM table1 LEFT JOIN table2 
     ON table1.id1 = (SELECT TOP 1 id2 FROM table2);
Run Code Online (Sandbox Code Playgroud)

我得到语法错误.它实际上是不可能的Access或只是我的错误?

我知道我可以得到相同的结果WHERE,但我的问题是关于JOINAccess的可能性.

Lit*_*les 12

根据MSDN文档,这是不可能的:

句法

FROM table1 [LEFT | 右] JOIN table2 ON table1.field1 compopr table2.field2

并且(强调我的):

field1,field2: 已连接的字段的名称.这些字段必须具有相同的数据类型并包含相同类型的数据,但它们不需要具有相同的名称.

您似乎甚至无法在您的加入中使用硬编码值; 您必须指定要加入的列名称.

在你的情况下,你会想要:

SELECT *
FROM Table1
LEFT JOIN (
    SELECT DISTINCT TOP 1 ID 
    FROM Table2
    ORDER BY ID
) Table2Derived ON Table1.ID = Table2Derived.ID
Run Code Online (Sandbox Code Playgroud)