Можно ли использовать подзапрос в условии join в Access?


В 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);

Я получаю синтаксическую ошибку. Это действительно невозможно в доступе или просто моя ошибка?

я знаю, что могу получить тот же результат с WHERE, но мой вопрос заключается в возможностях JOIN в доступе.

1 7

1 ответ:

Это невозможно, согласно документации MSDN:

Синтаксис

Из таблицы 1 [слева | справа ] присоединить таблицу 2 к таблице 1.field1 compopr Таблица 2.field2

И (курсив мой):

Field1, field2: имена полей, которые соединяются.Поля должны иметь один и тот же тип данных и содержать один и тот же тип данных, но они не должны иметь одно и то же имя.

Похоже, что у вас даже нет жесткого кода значения в соединении; вы должны указать имя столбца для соединения.

В вашем случае вы хотели бы:

SELECT *
FROM Table1
LEFT JOIN (
    SELECT DISTINCT TOP 1 ID 
    FROM Table2
    ORDER BY ID
) Table2Derived ON Table1.ID = Table2Derived.ID