原因是因为当子查询中不存在非别名列,但外部查询中确实存在非别名列时,Oracle会假定您正在从外部查询中引用该列。
使用别名,您感到困惑的查询看起来像:
select *from test_values tvwhere tv.tst_id in (select tv.tst_id2 from test_lookup tl where tl.tst_value = 'findMe');
希望这可以使事情变得更清楚?
您所看到的问题是一个很好的示例,说明了为什么始终应使用列来自哪个表来标记您的列-这样可以更轻松地维护查询的开始!



