select rownum r from emp where r<2 为什么这里使用别名会是错误的?select rownum from emp where rownum<2
select sal s from emp where sal<1000
select sal s from emp where s<1000
这几条都是对的

解决方案 »

  1.   

    最后一条也可以吗?我怎么不行!
    按我的理解,别名是在数据准备完毕后赋给某列的别名,而在数据准备之时是无效的。
    所以where子句中不能用别名,而在order子句中可以,因为后者是在数据准备完毕后进行的。
      

  2.   

    select sal s from emp where s<1000  
    这个肯定也不行。把结果包一层才可以用别名
      

  3.   

    select sal s from emp where s<1000这个是不行的,mysql 可以,oracle 不可以。要写成如下形式:select * from (
    select sal s from emp
    )
    where s<1000