SQL> select id * 12 AS id12 ,name from t1 where id12 > 20;
select id * 12 AS id12 ,name from t1 where id12 > 20
*
ERROR at line 1:
ORA-00904: "ID12": invalid identifier
将取别名的查询作为内联视图,便可以在外部查询中引用其中的别名列。为什么要这么做呢?WHERE子句是在SELECT之前进行处理的,这样,在处理求解“问题”查询的WHERE子句之前,SALARY和COMMISSION并不存在,要到WHERE子句处理完成之后,别名才生效。然而,FROM子句是在WHERE之前处理的。将原查询放在FROM子句中,那么,在最外层的WHERE子句之前,以及最外层的WHERE子句“看到”别名之前,就已经生成了查询结果。
SQL> select id * 12 AS id12 ,name from t1 where id * 12 > 20;
ID12 NAME
---------- ------------------------------
24 b
SQL> select * from (select id * 12 as id12,name from t1) x where id12 > 20;
ID12 NAME
---------- ------------------------------
24 b
版权声明:本文为博主原创文章,未经博主允许不得转载。
oracle