别名不能直接做where和group by后的查询条件,但order by 可以用别名

本文详细解析了在SQL查询中,别名在WHERE子句和ORDER BY子句中的使用限制。通过具体示例说明,WHERE子句在SELECT之前执行,因此无法直接使用列的别名作为查询条件;而ORDER BY子句由于在最后执行,故可以使用别名。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

select a.*,b.score as 01_score from 
student a left join SC b on a.Sid = b.Sid
where Cid = 01 and b.score < 60 
order by 01_score desc;

该句可以正常运行。
where 后面不可以用重命名后的列名(01_score), 而order by后面可以用。

如果是如下代码,出现错误:

select a.*,b.score as 01_score from 
student a left join SC b on a.Sid = b.Sid
where Cid = 01 and 01_score < 60 
order by 01_score desc;

Error Code: 1054. Unknown column ‘01_score’ in ‘where clause’

原因是where在select之前执行,所以别名不能直接做where后的查询条件

group by 同理。
但order by是最后执行,所以可以用别名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值