Представление действительно является сохраненным оператором SQL SELECT. По крайней мере, это то, что представляет собой сохраненный вид в MS Access. И вы используете одни и те же внутренние переменные A и B. ИМХО, они смешиваются. Последняя строка действительно выглядит как
SELECT A.ID FROM ATBL AS A WHERE EXISTS (SELECT 1 FROM (SELECT A.ID FROM ATBL AS A WHERE A.ID = 1 OR A.ID = 2) AS B WHERE B.ID=A.ID)
Попробуйте изменить некоторые внутренние имена, например:
SELECT AA.ID FROM ATBL AS AA WHERE AA.ID = 1 OR AA.ID = 2
Итак, последняя строка будет выглядеть как
SELECT A.ID FROM ATBL AS A WHERE EXISTS (SELECT 1 FROM (SELECT AA.ID FROM ATBL AS AA WHERE AA.ID = 1 OR AA.ID = 2) AS B WHERE B.ID=A.ID)
Итак, как мы видим, MS Access даже не знает, как изолировать псевдонимы!