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是最后执行,所以可以用别名。