在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
的可能性。
答案 0 :(得分:11)
语法
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