Это соотносится с tbl1. Всегда псевдоним ваших таблиц
Этот работает как ожидалось
create table tbl1 (col1 int);
insert tbl1 values (1);
create table tbl2 (col2 int);
insert tbl2 values (2);
-- execute query and subquery
select col1 from tbl1
where col1 in (select Z.col1 from tbl2 Z);
Я знаю, что это раздражает, не документировано и похоже на ошибку, но это не так. Если имя вашего столбца соответствует одному столбцу из всех допустимых столбцов в области, он использует этот столбец. Вот что здесь происходит. Существуют практики кодирования, которые останавливают эти ошибки, то есть навязывают все.
Я бы не назвал псевдонимы обходным решением. Здесь нет обходного пути - это совершенно логично.
Вы можете копаться в определениях того, как работают коррелированные подзапросы, и вы, вероятно, найдете ответ, но я бы просто посчитал это уроком.