その理由は、エイリアス化されていない列がサブクエリに存在せず、外部クエリに存在する場合、Oracleは外部クエリから列を参照していると見なすためです。
エイリアスを使用すると、混乱しているクエリは次のようになります。
select *
from test_values tv
where tv.tst_id in (select tv.tst_id2
from test_lookup tl
where tl.tst_value = 'findMe');
うまくいけば、それは物事をより明確にしますか?
表示されている問題は、列に元のテーブルのラベルを常に付ける必要がある理由の非常に良い例です。これにより、開始時のクエリの保守がはるかに簡単になります。