签到成功

知道了

CNDBA社区CNDBA社区

ORACLE 在WHERE子句中引用列别名的问题

2022-07-10 11:23 1032 0 原创 oracle
作者: hbhe0316
SQL> select id * 12 AS id12 ,name from t1 where id12 > 20;
select id * 12 AS id12 ,name from t1 where id12 > 20
                                           *
ERROR at line 1:
ORA-00904: "ID12": invalid identifier

将取别名的查询作为内联视图,便可以在外部查询中引用其中的别名列。为什么要这么做呢?WHERE子句是在SELECT之前进行处理的,这样,在处理求解“问题”查询的WHERE子句之前,SALARY和COMMISSION并不存在,要到WHERE子句处理完成之后,别名才生效。然而,FROM子句是在WHERE之前处理的。将原查询放在FROM子句中,那么,在最外层的WHERE子句之前,以及最外层的WHERE子句“看到”别名之前,就已经生成了查询结果。

http://www.cndba.cn/hbhe0316/article/108527
http://www.cndba.cn/hbhe0316/article/108527http://www.cndba.cn/hbhe0316/article/108527http://www.cndba.cn/hbhe0316/article/108527
http://www.cndba.cn/hbhe0316/article/108527
http://www.cndba.cn/hbhe0316/article/108527
http://www.cndba.cn/hbhe0316/article/108527
http://www.cndba.cn/hbhe0316/article/108527
http://www.cndba.cn/hbhe0316/article/108527
http://www.cndba.cn/hbhe0316/article/108527

SQL> select id * 12 AS id12 ,name from t1 where id * 12 > 20;

      ID12 NAME
---------- ------------------------------
        24 b

SQL> select * from (select id * 12 as id12,name from t1) x where id12 > 20;

      ID12 NAME
---------- ------------------------------
        24 b

版权声明:本文为博主原创文章,未经博主允许不得转载。

oracle

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
hbhe0316

hbhe0316

关注

1.只有承认无知,才能装下新的东西; 2.进步来自一点点滴滴的积累; 3.广博让你更优秀,而专业让你无法替代; 4.挫折和失败能够转换为一种财富。

  • 889
    原创
  • 1
    翻译
  • 13
    转载
  • 24
    评论
  • 访问:1040364次
  • 积分:1523
  • 等级:核心会员
  • 排名:第6名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ