为了给查询结果提供有意义的列名,我们会给列去别名 ,如:
select sal as salary,comm as commision
from emp
where salary<5000
但当执行上面语句时,会出现下列错误:
原因是where子句是在select之前进行处理的,当执行where子句时,salary和commission是不存在,要到where子句处理完之后,别名才生效。正确的写法是这样的:
select *
from ( select sal as salary,comm as commision
from emp) x
where salary < 5000;
这里因为from子句是在where子句之前执行的,那么,这样最外层的where子句就能看到别名。