ORACLE初用者常见的一个小问题,给列取了别名想用它在where字句中当查询条件,如:
SELECT EMPNO N FROM EMP WHERE N=1;
执行就会报错:ORA-00904:N标识符无效。
这里就涉及到ORACLE的parse select语句中的各部分的顺序问题。
顺序如下:
1. from语句
2. where语句(结合条件)
3. start with语句
4. connect by语句
5. where语句
6. group by语句
7. having语句
8. model语句
9. select语句
10. union、minus、intersect等集合演算演算
11. order by语句
看过这个parse的顺序就可以看出,先执行了from,再执行where此时where中只能读取到from 的表中的列,所以无法读到select后跟的别名,就会报错了