当我们使用某个表达式作为输出的一列时,我们无法再Where条件中直接使用该列作判断条件.
  例如下面的SQL语句:
select id, (c1 + c2) as s from t1  where s > 100
  SQL Server 报错: "列名 s 无效"
 
  当然,写成
    select id, (c1 + c2) as s from t1  where (c1 + c2) > 100

就没问题了.
  可是当表达式复杂时就很繁琐了.
 
  有没有可以在Where中使用这样的列名的办法?
  或者有什么其他办法可以解决这类问题呢?

解决方法:

SQL code复制代码
select t2.*
from (select id, (c1 + c2) as c from t1) t2
where c > 100 --或者 select t2.*
from (select id, c = c1+c2 from t1) t2
where c > 100

由于在Where语句不能直接使用列别名,因此我们需要将Sql语句给包装一下
                       在ORACLE中,在WHERE子句中引用列别名会出错,这是为什么呢?
                       因为: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语句

最新文章

  1. Linux下通过脚本自动备份Oracle数据库并删除指定天数前的备份
  2. keepalived+mysql实现双主高可用
  3. easyUI datagrid editor扩展dialog
  4. 统计单词个数及词频(C++实现)
  5. light oj 1148 - Mad Counting
  6. [置顶] think in java interview番外篇-谈程序员如何修练英语
  7. 利用for循环求1-100之间的奇数和 and 0-100的偶数和
  8. script:查看历史sql执行信息
  9. Python学习日记:day4
  10. SpringMVC入门就这么简单
  11. Java知多少(34)final关键字:阻止继承和多态
  12. dubbo spring pom文件报错:提示no declaration can be found for element 'dubbo:service'.
  13. Kubernetes简介
  14. Spring Boot 揭秘与实战(六) 消息队列篇 - RabbitMQ
  15. Laravel创建自定义 Artisan 控制台命令实例教程
  16. 我的主机是win 7 虚拟机是vmware,solaris10连接主机
  17. sqlserver操作命令
  18. IE浏览器SCRIPT5拒绝访问,谷歌浏览器XMLHttpRequest can't load file:/......
  19. Calendar 中getActualMaximumd 功能
  20. POJ 1182 食物链(经典带权并查集 向量思维模式 很重要)

热门文章

  1. must implement the inherited abstract method
  2. Android驱动开发前的准备(三)
  3. 关于C#操作数据库ExecuteNonQuery()的返回值问题
  4. IOS上解决内存越界访问问题
  5. 转义字符(\)对JavaScript中JSON.parse的影响概述
  6. Linux常用的安全工具 转自https://yq.aliyun.com/articles/52540?spm=5176.100239.blogcont24250.8.CfBYE9
  7. 怎样让SoapHttpClientProtocol不使用系统默认代理
  8. Oracle 用户管理与权限控制
  9. DE2-115开发板学习(1_时钟信号引脚分配与复位信号的产生)
  10. Delphi 使用CreateProcess创建进程并弹出进程PID值 (转)