SQL语句Where中使用别名作为判断条件

13 篇文章 0 订阅

当我们使用某个表达式作为输出的一列时

,

我们无法再

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

语句

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值