SQL语句Where中使用别名作为判断条件
2024-10-17 21:58:10
当我们使用某个表达式作为输出的一列时,我们无法再Where条件中直接使用该列作判断条件.
例如下面的SQL语句:
例如下面的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
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语句
最新文章
- Linux下通过脚本自动备份Oracle数据库并删除指定天数前的备份
- keepalived+mysql实现双主高可用
- easyUI datagrid editor扩展dialog
- 统计单词个数及词频(C++实现)
- light oj 1148 - Mad Counting
- [置顶] think in java interview番外篇-谈程序员如何修练英语
- 利用for循环求1-100之间的奇数和 and 0-100的偶数和
- script:查看历史sql执行信息
- Python学习日记:day4
- SpringMVC入门就这么简单
- Java知多少(34)final关键字:阻止继承和多态
- dubbo spring pom文件报错:提示no declaration can be found for element 'dubbo:service'.
- Kubernetes简介
- Spring Boot 揭秘与实战(六) 消息队列篇 - RabbitMQ
- Laravel创建自定义 Artisan 控制台命令实例教程
- 我的主机是win 7 虚拟机是vmware,solaris10连接主机
- sqlserver操作命令
- IE浏览器SCRIPT5拒绝访问,谷歌浏览器XMLHttpRequest can't load file:/......
- Calendar 中getActualMaximumd 功能
- POJ 1182 食物链(经典带权并查集 向量思维模式 很重要)
热门文章
- must implement the inherited abstract method
- Android驱动开发前的准备(三)
- 关于C#操作数据库ExecuteNonQuery()的返回值问题
- IOS上解决内存越界访问问题
- 转义字符(\)对JavaScript中JSON.parse的影响概述
- Linux常用的安全工具 转自https://yq.aliyun.com/articles/52540?spm=5176.100239.blogcont24250.8.CfBYE9
- 怎样让SoapHttpClientProtocol不使用系统默认代理
- Oracle 用户管理与权限控制
- DE2-115开发板学习(1_时钟信号引脚分配与复位信号的产生)
- Delphi 使用CreateProcess创建进程并弹出进程PID值 (转)