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

时间:2012-11-26 15:20:08

标签: 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);

但是当我尝试在Access

中使用它时
SELECT *
FROM table1 LEFT JOIN table2 
     ON table1.id1 = (SELECT TOP 1 id2 FROM table2);

我收到语法错误。在Access中实际上是不可能的还是我的错误?

我知道我可以使用WHERE获得相同的结果,但我的问题是关于Access中JOIN的可能性。

1 个答案:

答案 0 :(得分:11)

根据MSDN documentation

,这是不可能的
  

语法

     

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