`
snowstone
  • 浏览: 19143 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

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

阅读更多
SQL> select sal,comm from emp   
  2  where sal<2000;   
  
       SAL       COMM   
---------- ----------   
       800   
      1600        300   
      1250        500   
      1250       1400   
      1500          0   
      1100   
       950   
      1300   
  
8 rows selected.   
  
SQL> select sal as salary,comm as commission from emp   
  2  where salary<2000;   
where salary<2000   
      *   
ERROR at line 2:   
ORA-00904: "SALARY": invalid identifier   
  
  
SQL> select * from   
  2  (   
  3  select sal as salary,comm as commission from emp   
  4  ) x   
  5  where salary<2000;   
  
    SALARY COMMISSION   
---------- ----------   
       800   
      1600        300   
      1250        500   
      1250       1400   
      1500          0   
      1100   
       950   
      1300   
  
8 rows selected.  

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

相关推荐

    Oracle 11GR2的递归WITH子查询方法

    下面给大家详细介绍Oracle 11GR2的递归WITH子查询方法,具体内容如下所示: SQL&gt; with emp_data(ename,empno,mgr,l) as (select ename, empno, mgr, 1 lvl from emp where mgr is null union all select emp....

    Oracle数据库Sql性能调优

    1.7 WHERE子句中的连接顺序 6 1.8 SELECT子句中避免使用 ‘ *‘ 7 1.9 减少访问数据库的次数 7 1.10 使用DECODE函数来减少处理时间 8 1.11 删除重复记录 8 1.12 用TRUNCATE替代DELETE 9 1.13 尽量多使用COMMIT 9 ...

    oracle学习日志总结

    6. 不要在where子句中的“=”左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引。尽量使用“&gt;=”,不要使用“&gt;”,用EXISTS代替IN(外表数据小情况),用大于或小于代替不等于,用右模糊查询...

    Oracle数据库、SQL

    4.4 where子句后面可以跟多个条件表达式 8 4.5 between and运算符 8 4.6 in运算符(多值运算符) 8 4.7 like运算符 9 4.8 is null运算符 9 4.9比较和逻辑运算符(单值运算符) 9 4.10多值运算符all、any 9 4.11...

    oracle数据库11G初学者指南.Oracle.Database.11g,.A.Beginner's.Guide

    4.3.6 where子句中的常用操作符 4.4 基本的update和delete语句 4.4.1 update语句 4.4.2 delete语句 4.5 数据排序 4.6 函数:字符串函数、数字函数和聚集函数(不是分组) 4.6.1 字符串函数 4.6.2 数字函数 4.6.3 ...

    Oracle数据库Sql语句详解大全

    在查询中使用表达式、运算符 对空值的处理 对查询字段起别名 查询字段的连接 第二章 条件查询 WHERE条件查询 在查询中使用表达式、运算符 使用LIKE、BETWEEN、IN进行模糊查询 第三章 单行函数 熟悉各种类型单行...

    Oracle Database 11g初学者指南--详细书签版

    4.3.6 where子句中的常用操作符 86 4.4 基本的update和delete语句 87 4.4.1 update语句 87 4.4.2 delete语句 88 4.5 数据排序 90 4.6 函数:字符串函数、数字函数和聚集函数(不是分组) 91 4.6.1 字符串函数 ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    其一、就业面广:全球前100强企业99家都在使用ORACLE相关技术,中国政府机构,大中型企事业单位都能有ORACLE技术的工程师岗位。 其二、技术层次深:如果期望进入IT服务或者产品公司(类似毕博、DELL、IBM等),...

    Oracle创建视图(View)

    WITH READ ONLY :默认可以通过视图对基表执行增删改操作,但是有很多在基表上的限制(比如:基表中某列不能为空,但是该列没有出现在视图中,则不能通过视图执行insert操作),WITH READ ONLY说明视图是只读视图,不...

    Oracle_Database_11g完全参考手册.part3/3

    7.6 在orderby和where子句中使串函数 7.6.1 SOUNDEX 7.6.2 国际语言支持 7.6.3 正则表达式支持 7.7 小结 第8章 正则表达式搜索 8.1 搜索串 8.2 REGExP_SUBSTR 8.3 REGEXP_INSTR 8.4 REGEXP-LIKE 8.5 REPLACE和...

    PLSQL程序优化和性能分析方法

    2.4.2 WHERE子句中的连接顺序 8 2.4.3 SELECT子句中避免使用 ‘ * ‘ 8 2.4.4 用EXISTS替代IN 8 2.4.5 用NOT EXISTS替代NOT IN 9 2.4.6 用表连接替换EXISTS 9 2.4.7 用EXISTS替换DISTINCT 10 2.4.8 减少对表的查询 ...

    Oracle_Database_11g完全参考手册.part2/3

    7.6 在orderby和where子句中使串函数 7.6.1 SOUNDEX 7.6.2 国际语言支持 7.6.3 正则表达式支持 7.7 小结 第8章 正则表达式搜索 8.1 搜索串 8.2 REGExP_SUBSTR 8.3 REGEXP_INSTR 8.4 REGEXP-LIKE 8.5 REPLACE和...

    关于Oracle数据库常见的SQL语句及工作经验

    oracle常见查询语句总结select sum(字段) from 表名 where 条件 group by 字段 ...2、执行where子句,使用限定符对数据进行过滤 3、执行select子句,确定要检索出的数据列 4、执行order by子句排序 distinc

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第2/2部分)

    9.4.1 WHERE子句 325 9.4.2 比较运算符 328 9.4.3 布尔运算符 332 9.4.4 优先规则 334 9.5 排序查询检索的行 335 9.6 &符号替换 337 9.6.1 替换变量 337 9.6.2 定义和验证 339 9.7 本章知识点回顾 342 9.8...

    2009达内SQL学习笔记

    保存在oracle数据库中的所有操作细节: spool oracleday01.txt :开始记录 spool off :开始保存细节 四、SELECT语句:选择操作、投影操作。 select:从一个或多个表中检索一个或多个数据列。包含信息:想选择...

    oracle数据库笔记

    3.Where子句——选择行(选择)数据过滤 35 4.Order By子句 35 5.统计函数——列名应指定别名 35 6. Group By分组 36 7.Having子句 36 8.练习:表的查询 36 五. 在SQL *Plus中使用函数 37 1.字符串函数 37 2.数字...

    Oracle数据库实验操作

    实验9:显示表的部分行和部分列,使用where子句过滤出想要的行 18 实验10:使用like查询近似的值 18 实验11:使用order by子句来进行排序操作 20 实验12:操作字符串的函数 22 实验13:操作数字的函数 25 实验14:...

    精通SQL 结构化查询语言详解

    5.4 使用WHERE子句定义搜索条件查询  5.4.1 WHERE子句单条件查询 5.4.2 单值比较运算符 5.4.3 BETWEEN运算符范围筛选 5.4.4 NULL值的判断 第6章 复杂搜索条件查询  6.1 本章用到的实例表  6.2 组合查询...

    Oracle事例

    字符串字段中含有\"\\t \\n\",如果用来在c或者c++程序中输出到文件,格式无法保证。 比如:replace(f2,\'\\t\',\'\') &lt;3&gt;.清除换行和回车 比如: replace(f2,chr(13)||chr(10),\'\') 23、如何在字符串里加回车...

Global site tag (gtag.js) - Google Analytics