发现个sql解析的感觉像BUG的特性,分享出来
liu志坚 2020-04-07 04:41:38 版本。
SQL> select * from v$version where rownum<2;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
create table t_lzj1(aa number,bb varchar2(100),cc number,dd varchar2(100));
create table t_lzj2(aa number,bb varchar2(100));
select aa from lzj.t_lzj2 b where cc > 5; #这个报ora-00904
select * from lzj.t_lzj1 a where aa in (select aa from lzj.t_lzj2 b where cc > 5);
这样可以执行。
10053跟踪发现优化器优化后把CC解析为 a表的了:
SELECT A.AA AA, A.BB BB, A.CC CC, A.DD DD
FROM LZJ.T_LZJ2 B, LZJ.T_LZJ1 A
WHERE A.CC > 5
AND A. AA = B.AA;