内联视图:
select * from ( select sal as salary,comm as commission from emp ) x where salary <5000
将取别名的查询作为内联视图,便可以在外部查询中引用其中的别名列。为什么要这么做呢?where 字句是在select 之前进行处理的,这样,在处理求解“问题”查询的where子句之前,Salary和Commission并不存在,要到where子句处理完之后,别名才生效。然后,From子句是在where之前处理的。 所以,将原查询放在FROM子句中,那么,在最外层的WHERE子句之前,以及最外层的WHERE子句“看到”别名之前,那么已经生成了查询结果。这个技巧特别有用。
注意:这个解决方案中的内联视图取名为X。并非所有的数据库都需要内联视图显式给内联视图取别名,但一些数据库是这样子的。所有的DB都接受这种方式。