Select distinct A.col1, B.col2, col3
from A inner join B on A.id = B.id
and B.id in
(select distinct col2 from B where ..... )
PostgreSQLのplpgsqlパーサーは、括弧内のサブクエリ内の修飾されていない「col2」を好みません。サブクエリで言及されているテーブルは1つしかないので、パーサーは何もないところにあいまいさを作り出していませんか?