示例:

SQL> SELECT name N FROM Stu WHERE N<>a;

此时会报错,无法识别N。


首先要知道,在Oracle中,查询(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

SELECT 语句在WHERE语句后面才执行,而列的别名是在SELECT 时才生成的,所以出错了

根据实际情况可以写成 select N from (SELECT name FROM Stu)where N<>a;